簡體   English   中英

虛擬環境和嵌入Python

[英]Virtual environments and embedding Python

我非常喜歡Python的virtualenv ,它有助於維護單獨的Python配置。 我正在考慮將Python嵌入到C ++應用程序中,並且想知道嵌入式Python在虛擬環境方面的表現如何。

特別是,我有興趣知道是否可以基於某些用戶定義的設置“選擇”虛擬環境(例如,通過在配置文件中命名感興趣的虛擬環境)。

virtualenv文檔包括一個不帶bin/pythonUsing 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM