[英]Virtual environments and embedding Python
我非常喜歡Python的virtualenv
,它有助於維護單獨的Python配置。 我正在考慮將Python嵌入到C ++應用程序中,並且想知道嵌入式Python在虛擬環境方面的表現如何。
特別是,我有興趣知道是否可以基於某些用戶定義的設置“選擇”虛擬環境(例如,通過在配置文件中命名感興趣的虛擬環境)。
virtualenv文檔包括一個不帶bin/python
的Using virtualenv部分,暗示了一旦解釋器已經運行,如何配置虛擬環境。
為了避免硬編碼activate_this.py
腳本的路徑,我使用以下代碼段:
def resolve_virtual_environment(override=None):
"""Fetch the virtual environment path in the
process' environment or use an override."""
path = os.getenv('VIRTUAL_ENV')
if override:
path = os.path.join(os.getcwd(), override)
return path
def activate_virtual_environment(environment_root):
"""Configures the virtual environment starting at ``environment_root``."""
activate_script = os.path.join(
environment_root, 'Scripts', 'activate_this.py')
execfile(activate_script, {'__file__': activate_script})
你可以像這樣使用它:
if __name__ == '__main__':
# use first argument is provided.
override = None
if len(sys.argv) > 1:
override = sys.argv[1]
environment_root = resolve_virtual_environment(override)
您可以從配置文件或其他內容中獲取override
值,而不是從命令行參數中獲取。
請注意,您仍然只能使用單個虛擬環境預處理。
注意 :與使用虛擬環境中捆綁的解釋器相比,您可以訪問為您啟動的解釋器安裝的軟件包。 例如,使用全局安裝的Python時,您將可以訪問全局安裝的軟件包。
還要確保使用Python解釋器,其版本與您用於創建虛擬環境的任何版本相匹配,以確保標准庫(復制到虛擬環境)版本與Python解釋器版本匹配。
是的,當然。 這只是你將PYTHONPATH設置為(或編譯的內容)的問題。
一定要查看pythonqt (不要誤認為是PySide或PyQt ..它是另一種方式,將Python構建到Qt C ++應用程序中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.