virtualenv沒有將.py(w)
文件與virtualenv的Python可執行文件的版本關聯起來,原因是什麼?這對於Windows上的virtualenv來說似乎是一個理想的任務,考慮到Windows上沒有像shebang這樣的機制。爲什麼Windows上的virtualenv與virtualenv版本的Python可執行文件關聯.py/.pyw/.pyo/.pyc文件?
回答
文件類型關聯在Windows註冊表中處理。 virtualenv激活腳本將不得不修改註冊表項,並且停用腳本需要恢復以前的值(或者冒險破壞關聯)。
如果激活virtualenv,打開第二個cmd.exe實例並激活其他virtualenv,會發生什麼情況?除非您以正確的順序禁用它們,否則註冊表項的存儲值將會丟失。
我不是virtualenv的開發者,我想說潛在的問題遠遠超過了微小的好處。
較短的答案可能是「這是複雜和痛苦的,沒有人希望該功能足以實現它」。 – Velociraptors 2011-02-03 22:22:31
我所有的Python開發目前都在Linux上,但我正在研究Windows,這是我如何找到這個問題。我的答案將是一個可操作的:
在提示時,我總是輸入python <scriptName>.py
而不是輸入<scriptName>.py
。如果你採用這種習慣,virtualenv會不會爲你執行正確的Python?
Python啓動器支持自定義命令。像這樣一款LOCALAPPDATA:創建$ ENV一個py.ini文件
[commands]
venvpython=C:\Path\To\Virtualenv\Scripts\python.exe
現在,你可以在#使用venvpython!你的腳本行:
#!venvpython
import sys
print(sys.executable)
virtualenvwrapper-win確實與當前活動的virtualenv副Python文件:
注意,批處理腳本
pyassoc
需要提升的命令提示符或UAC被禁用。此腳本將.py 文件與python.bat
關聯起來,這是一個簡單的批處理文件,根據您是否擁有活動的virtualenv來調用正確的python.exe
。這個 允許你從命令行調用python腳本,並調用 正確的python解釋器。看看源代碼 - 這是 令人難以置信的簡單,但我發現處理條件 文件擴展名關聯的最佳途徑。
python.bat
看起來像這樣
@echo off
if defined PYTHONHOME (
goto MAIN
)
FOR /F "tokens=*" %%i in ('whereis.bat python.exe') do set PYTHONHOME=%%~dpi
SET PYTHONHOME=%PYTHONHOME:~0,-1%
:MAIN
SETLOCAL EnableDelayedExpansion
if defined VIRTUAL_ENV (
set PY="%VIRTUAL_ENV%\Scripts\python.exe"
) else (
set PY="%PYTHONHOME%\python.exe"
)
ENDLOCAL & %PY% %*
:END
UPDATE
現在,可以 - 看How to associate Python scripts with active virtualenv?
- 1. Python virtualenv - >在venv/bin/python中的新python可執行文件
- 2. 改變windows上的virtualenv文件夾
- 3. 的virtualenv activate_this與不同的Python版本
- 4. 將msi文件安裝到windows上的virtualenv python上
- 5. virtualenv與此係統或可執行文件不兼容
- 6. virtualenv與此係統或可執行文件不兼容。
- 7. virtualenv不指向本地可執行文件
- 8. Virtualenv Python Windows
- 9. Python + Django + VirtualEnv + Windows
- 10. 匹版本的virtualenv
- 11. 在virtualenv中創建可執行主機文件的位置?
- 12. 設置Python特定版本的Python virtualenv
- 13. 在Windows上使用virtualenv -p(和virtualenvwrapper-win)的多個python版本
- 14. 如何將Python腳本與活動的virtualenv關聯?
- 15. 關於可執行文件與Windows
- 16. 在Requirements.txt中爲Virtualenv指定Python版本
- 17. 在早期版本上運行的Python可執行文件
- 18. 爲什麼python virtualenv命令在Windows 10上失敗?
- 19. Ansible - Virtualenv可執行文件嘗試python3.5時沒有找到
- 20. 使用特定版本的Python創建Windows Python virtualenv
- 21. 使用Anaconda的Python版本創建virtualenv
- 22. Virtualenv與本地python安裝
- 23. 在Windows上使用VirtualEnv和多個Python版本
- 24. python virtualenv:爲什麼我仍然可以在clean/new virtualenv中導入舊模塊
- 25. 在Windows上的virtualenv Python成像庫(PIL)
- 26. 在Windows上的virtualenv中安裝python-ldap
- 27. IntelliJ IDEA - 在Windows上的unix python virtualenv
- 28. Python到Windows下的可執行文件
- 29. 如何爲Windows可執行文件製作Python腳本插件?
- 30. Django和virtualenv文件夾
見http://www.python.org/dev/peps/pep- 0397 /適用於Windows的shebang-proposal。 – Macke 2011-06-01 09:36:34
非常相關:[單個cmd.exe會話臨時文件關聯](http://stackoverflow.com/questions/5583024/) – 2011-09-06 20:42:00