不,對於''--relocatable'不會更新'virtualenv/bin/activate'腳本。是的,你可以通過像zeekay建議的那樣重新運行虛擬環境設置來解決這個問題,但是仍然無法導入任何放置在'virtualenv/src'中的'pip -e git ...'安裝,因此你將不得不重新運行這些點子手動安裝。
從現在的經驗來看,我不會安裝pip可編輯(-e),如果需要手動克隆存儲庫到'project/src /'而不是'project/virtualenv/src'並且具有以下auto_prep_pythonpath.py
腳本在啓動我的項目之前加載(我在我的django.wsgi
腳本中引用它)。
作爲一個方面說明,我爲'project/src'中的任何軟件包添加了'tailored',這些軟件包被修改/被黑客入侵,所以我不必擔心向後兼容性問題,並且跟蹤代碼控制下的所有源代碼在線存儲庫可以並且會對你制動。
希望這會有所幫助。
"""
Prepares python path to include additional project/src/<APP> in PYTHONPATH - This file gets automatically loaded by projects __init__.py
This script lives in 'project/src/django-project/auto_prep_pythonpath.py', modify
'SOURCE_ROOT' if you place it somehwere else.
"""
import logging
import os
import sys
SOURCE_ROOT = os.path.dirname(os.path.abspath(__file__)).replace('\\','/') # the replacements are when on windows
SOURCE_ROOT = os.path.join(SOURCE_ROOT, '../').replace('\\','/')
SOURCE_ROOT = os.path.normpath(SOURCE_ROOT)
logger = logging.getLogger(__name__)
logger.info("Adding packages in 'src/*' required by project to PYTHONPATCH.")
dirlist_arr = os.listdir(SOURCE_ROOT)
while dirlist_arr:
item_path = os.path.join(SOURCE_ROOT, dirlist_arr.pop()).replace('\\','/') # replace dashes is for win based file system
if os.path.isdir(item_path):
if not item_path in sys.path:
sys.path.insert(0, item_path) # we use insert to take precedence over any global paths - minimises import conflict suprises
logger.debug("Path '%s' added." % item_path)
什麼是「虛擬env上的可重定位呼叫」? – hughdbrown
請記住接受您的問題的答案。您可以通過點擊最有幫助的旁邊的複選標記來完成此操作。請回過頭去爲你的舊的,回答的問題做。 – agf
我不明白你爲什麼要移動你的virtualenvs。我只是把它們放在'〜/ .virtualenvs'中,我完成了。沒有麻煩,沒有大驚小怪。 – hughdbrown