【问题标题】:Is my virtual environment (python) causing my PYTHONPATH to break?我的虚拟环境(python)是否导致我的 PYTHONPATH 中断?
【发布时间】:2011-06-08 20:36:09
【问题描述】:

在我的 /etc/profile 中,我将 PYTHONPATH 设置为一些东西。

但是当我source myvirtual-env

然后在 python 中这样做:

>>> import sys
>>> print sys.path

我在任何地方都看不到我的路径。

【问题讨论】:

    标签: python linux unix virtualenv


    【解决方案1】:

    这就是 virtualenv 的重点。它不会从您的其余设置继承。如果你想要一个 PYTHONPATH,你需要明确地设置一个。

    这个djangousers post 可能有帮助,你想用virtualenvwrapper 来解决这个问题。

    this other SO post on a similar problem 中的更多信息。

    【讨论】:

    【解决方案2】:

    我没有观察到 Python 2.7、virtualenv 1.7.1.2 在 Windows XP 上的问题,我怀疑 Paul McMillan 的回答是错误的。

    # PYTHONPATH not set
    # output from python -c "import sys; print sys.path" (edited for clarity)
    
    '',
    'C:\\Program Files\\python\\2.7\\lib\\site-packages\\pip-1.1-py2.7.egg',
    'C:\\WINDOWS\\system32\\python27.zip',
    'C:\\Program Files\\python\\2.7\\DLLs',
    'C:\\Program Files\\python\\2.7\\lib',
    'C:\\Program Files\\python\\2.7\\lib\\plat-win',
    'C:\\Program Files\\python\\2.7\\lib\\lib-tk',
    'C:\\Program Files\\python\\2.7',
    'C:\\Program Files\\python\\2.7\\lib\\site-packages',
    'C:\\Program Files\\python\\2.7\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info'
    
    # PYTHONPATH not set, virtualenv activated
    # output from python -c "import sys; print sys.path" (edited for clarity)
    
    '',
    'c:\\python\\virtualenv\\2.7\\lib\\site-packages\\distribute-0.6.24-py2.7.egg',
    'c:\\python\\virtualenv\\2.7\\lib\\site-packages\\pip-1.1-py2.7.egg',
    'C:\\WINDOWS\\system32\\python27.zip',
    'c:\\python\\virtualenv\\2.7\\DLLs',
    'c:\\python\\virtualenv\\2.7\\lib',
    'c:\\python\\virtualenv\\2.7\\lib\\plat-win',
    'c:\\python\\virtualenv\\2.7\\lib\\lib-tk',
    'c:\\python\\virtualenv\\2.7\\Scripts',
    'C:\\Program Files\\python\\2.7\\Lib',
    'C:\\Program Files\\python\\2.7\\DLLs',
    'C:\\Program Files\\python\\2.7\\Lib\\lib-tk',
    'c:\\python\\virtualenv\\2.7',
    'c:\\python\\virtualenv\\2.7\\lib\\site-packages'
    
    # PYTHONPATH set to c:\pythonpath_sample_dir
    # output from python -c "import sys; print sys.path" (edited for clarity)
    
    ''
    'C:\\Program Files\\python\\2.7\\lib\\site-packages\\pip-1.1-py2.7.egg'
    'c:\\pythonpath_sample_dir'   <--- value from PYTHONPATH
    'C:\\WINDOWS\\system32\\python27.zip'
    'C:\\Program Files\\python\\2.7\\DLLs'
    'C:\\Program Files\\python\\2.7\\lib'
    'C:\\Program Files\\python\\2.7\\lib\\plat-win'
    'C:\\Program Files\\python\\2.7\\lib\\lib-tk'
    'C:\\Program Files\\python\\2.7'
    'C:\\Program Files\\python\\2.7\\lib\\site-packages'
    'C:\\Program Files\\python\\2.7\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info'
    
    # PYTHONPATH set to c:\pythonpath_sample_dir, virtualenv activated
    # output from python -c "import sys; print sys.path" (edited for clarity)
    
    ''
    'c:\\python\\virtualenv\\2.7\\lib\\site-packages\\distribute-0.6.24-py2.7.egg'
    'c:\\python\\virtualenv\\2.7\\lib\\site-packages\\pip-1.1-py2.7.egg'
    'c:\\pythonpath_sample_dir'   <--- value from PYTHONPATH
    'C:\\WINDOWS\\system32\\python27.zip'
    'c:\\python\\virtualenv\\2.7\\DLLs'
    'c:\\python\\virtualenv\\2.7\\lib'
    'c:\\python\\virtualenv\\2.7\\lib\\plat-win'
    'c:\\python\\virtualenv\\2.7\\lib\\lib-tk'
    'c:\\python\\virtualenv\\2.7\\Scripts'
    'C:\\Program Files\\python\\2.7\\Lib'
    'C:\\Program Files\\python\\2.7\\DLLs'
    'C:\\Program Files\\python\\2.7\\Lib\\lib-tk'
    'c:\\python\\virtualenv\\2.7'
    'c:\\python\\virtualenv\\2.7\\lib\\site-packages'
    

    另外python virtualenv: why can I still import old modules in clean/new virtualenv 似乎也确认PYTHONPATH 被使用 来构造sys.path 也当虚拟环境被激活时。

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      相关资源
      最近更新 更多