2014-04-01 22 views
11

Tôi có python 2.7.6 và 3.4.0 trên máy tính của mình. Phiên bản 2.7 là trên con đường của tôi. Tôi muốn thiết lập một virtualenv sử dụng 3.4. Có nhiều bài đăng trên SO và các nơi khác đề xuất tôi làm như sau từ dấu nhắc lệnh:Sử dụng VirtualEnv với nhiều phiên bản Python trên windows

virtualenv -p c:\python34 myvirtualenv 

nhưng điều này không hiệu quả đối với tôi. Phiên giao diện điều khiển có đặc quyền quản trị viên và UAC tắt, tuy nhiên tôi nhận được một vấn đề quyền:

F:\virtualenv>virtualenv -p c:\python34 myenv 
Running virtualenv with interpreter c:\python34 
Traceback (most recent call last): 
    File "c:\python27\scripts\virtualenv-script.py", line 9, in <module> 
    load_entry_point('virtualenv==1.11', 'console_scripts', 'virtualenv')() 
    File "C:\Python27\lib\site-packages\virtualenv.py", line 779, in main 
    popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env) 
    File "C:\Python27\lib\subprocess.py", line 709, in __init__ 
    errread, errwrite) 
    File "C:\Python27\lib\subprocess.py", line 957, in _execute_child 
    startupinfo) 
WindowsError: [Error 5] Access is denied 

Tôi cũng đã thử nó đặc biệt trỏ đến phiên bản 3.4 của virtualenv, nhưng không làm thay đổi con đường nó kết thúc thực hiện một hỗn hợp túi 2,7 và 3,4 tệp python.

Cách duy nhất tôi có thể tìm thấy để thiết lập môi trường ảo là thay đổi đường dẫn thành 3.4, chạy virtualenv rồi đặt lại đường dẫn của tôi thành 2.7, đánh bại điểm chuyển đổi python trên virtualenv.

Cảm ơn

Trả lời

16

tốt hơn:

py -3.4 -m venv c:\path\to\wherever\you\want\it 

Nếu bạn không có py.exe launcher (nhưng nó phải được cài đặt), bạn có thể thay thế py -3.4 với c:\Python34\python.exe (giả sử vị trí mặc định)


Tính năng này hoạt động nhờ bộ chọn thời gian chạy cực kỳ tiện dụng, Windows-versioningest, siêu đẹp nhất py.exe

Theo mặc định, py.exe sẽ có mặt trên bản cài đặt Windows (tôi nghĩ nó đi kèm với 2,7, tôi biết nó có 3+). Khi bạn chạy py thì nó sẽ tìm kiếm một số biến môi trường hoặc bạn có thể ghi đè lên một số phiên bản cụ thể (trong trường hợp của bạn là -2.7 hoặc -3.4) Bạn có thể bỏ số .4 và nó sẽ chọn số phiên bản nhỏ nhất "lớn nhất".

Bạn cũng có thể cũng sử dụng nó để chạy tập lệnh Python. Nếu bạn đặt dòng băm ở đầu tập lệnh #!python3 và gọi nó là py myscript.py thì nó sẽ chọn phiên bản Python chính xác để bắt đầu bằng cách tìm kiếm dòng đầu tiên của tập lệnh và tìm số phiên bản.

Đây là mát mẻ, bởi vì bạn có thể đặt một cái gì đó giống như #!/usr/bin/env python3.4 ở phía trên cùng của kịch bản của bạn và chạy nó trên Windows với py, hoặc trên Linux bằng cách làm

$ chmod +x myscript.py 
$ ./myscript.py 

Khá hữu ích.

+0

Điều đó hoạt động, cảm ơn. Tôi không quen với py. Tôi sẽ phải tra cứu nó. – marcp

+0

@marcp, thêm một số thông tin (mặc dù bạn có thể tìm thấy tất cả trong tài liệu chính thức, quá) –

+0

@ oenpelli của giải pháp làm việc cho tôi. Chỉ cần thêm python.exe vào đường dẫn trong tham số -p. – RandyTek

8

Dưới Windows bạn cần phải chạy:

virtualenv -p c:\python34.exe myvirtualenv 

Các .exe ở cuối dòng làm cho tất cả sự khác biệt.

+1

Chỉ cần một lưu ý nhỏ "virtualenv -p c: \ python34 \ python.exe myvirtualenv" hoạt động cho tôi – RandyTek

4

Đã phải chơi xung quanh với điều này một lúc để làm cho nó đúng. Đã cài đặt Python2.7.9 (Windows 7), muốn dùng bản phát hành Python3 mới nhất cho một vòng quay. Sau khi cài đặt Python3.4.3 Tôi đã đi đến quầy bar thư mục và tạo ra một môi trường ảo foo với lệnh này:

virtualenv -p c:\Python34\python.exe foo 

Tôi đã mất khá nhiều thời gian để hiểu rằng tôi cần phải cài đặt các thông dịch viên Python3.4.3 trong thời trang 'bình thường', tôi ban đầu nghĩ rằng nó sẽ được cài đặt USING virtualenv. Điều đó đã được giải thích trong this answer. Tôi không chạm vào pythonpath trong Windows sau khi cài đặt Python3.4.3.

0

Nếu các biện pháp trên không làm việc, hãy thử này (sử dụng venv thay vì virtualenv):

python -m venv venvname 

(thay thế python với con đường python.exe nếu nó không được liệt kê trong môi trường thiết lập con đường biến)

Các vấn đề liên quan