Python 如何确保从Virtualenv中的同一位置导入所有模块

Python 如何确保从Virtualenv中的同一位置导入所有模块,python,virtualenv,Python,Virtualenv,我运行的是基于python的软件,它需要一个virtualenv,并在其中安装了各种附加的python包。以下是安装说明: Clone the repository to a shared filesysem on a cluster >git clone https://github.com/jgurtowski/nanocorr >cd nanocorr Create a virtual environment to install p

我运行的是基于python的软件,它需要一个virtualenv,并在其中安装了各种附加的python包。以下是安装说明:

Clone the repository to a shared filesysem on a cluster

    >git clone https://github.com/jgurtowski/nanocorr
    >cd nanocorr        

    Create a virtual environment to install python dependencies

    >virtualenv nanocorr_ve
    >source nanocorr_ve/bin/activate

    install the following packages using pip:

        pip install git+https://github.com/cython/cython
        pip install numpy
        pip install h5py
        pip install git+https://github.com/jgurtowski/pbcore_python
        pip install git+https://github.com/jgurtowski/pbdagcon_python
        pip install git+https://github.com/jgurtowski/jbio
        pip install git+https://github.com/jgurtowski/jptools

    #Finally install the nanocorr package itself

    > python setup.py install
我毫无问题地做到了这一点。然而,在运行该软件时,我发现它在以下跟踪中失败

(nanocorr_ve)[nanocorr_test]$ correctOxford
Traceback (most recent call last):
  File    "/local/workdir/malonge/nanocorr_test/nanocorr/nanocorr_ve/bin/correctOxford",     line 9, in <module>
    load_entry_point('jptools==0.1', 'console_scripts', 'correctOxford')()
  File     "/local/workdir/malonge/nanocorr_test/nanocorr/nanocorr_ve/lib/python2.7/site-    packages/pkg_resources/__init__.py", line 558, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File     "/local/workdir/malonge/nanocorr_test/nanocorr/nanocorr_ve/lib/python2.7/site-    packages/pkg_resources/__init__.py", line 2682, in load_entry_point
    return ep.load()
  File     "/local/workdir/malonge/nanocorr_test/nanocorr/nanocorr_ve/lib/python2.7/site-    packages/pkg_resources/__init__.py", line 2355, in load
    return self.resolve()
  File     "/local/workdir/malonge/nanocorr_test/nanocorr/nanocorr_ve/lib/python2.7/site-    packages/pkg_resources/__init__.py", line 2361, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File     "/local/workdir/malonge/nanocorr_test/nanocorr/nanocorr_ve/lib/python2.7/site-    packages/jptools/correct.py", line 21, in <module>
    from pbtools.pbdagcon.q_sense import output_dag_info
  File     "/local/workdir/malonge/nanocorr_test/nanocorr/nanocorr_ve/lib/python2.7/site-    packages/pbtools/pbdagcon/q_sense.py", line 50, in <module>
    from pbcore.io import FastaReader
  File "/programs/python/lib/python2.7/site-packages/pbcore-1.0.0-    py2.7.egg/pbcore/io/__init__.py", line 31, in <module>
    from .BasH5IO import *
  File "/programs/python/lib/python2.7/site-packages/pbcore-1.0.0-    py2.7.egg/pbcore/io/BasH5IO.py", line 37, in <module>
    import h5py, numpy as np, os.path as op
  File "/programs/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-    x86_64.egg/h5py/__init__.py", line 13, in <module>
    from . import _errors
 ImportError: /programs/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg/h5py/_errors.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8
(nanocorr\u ve)[nanocorr\u测试]$correctOxford
回溯(最近一次呼叫最后一次):
文件“/local/workdir/maloge/nanocorrèu test/nanocorr/nanocorrève/bin/correctOxford”,第9行,in
加载入口点('jptools==0.1','console\u脚本','correctOxford')()
文件“/local/workdir/maloge/nanocorr\u test/nanocorr/nanocorr\u ve/lib/python2.7/site-packages/pkg\u resources/\uuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
返回获取分布(dist)。加载入口点(组、名称)
文件“/local/workdir/maloge/nanocorr\u test/nanocorr/nanocorr\u ve/lib/python2.7/site-packages/pkg\u resources/\uuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
返回ep.load()
文件“/local/workdir/maloge/nanocorr\u test/nanocorr/nanocorr\u ve/lib/python2.7/site-packages/pkg\u resources/\uuuuu init\uuuuuuuuuu.py”,第2355行,已加载
返回self.resolve()
文件“/local/workdir/maloge/nanocorr\u test/nanocorr/nanocorr\u ve/lib/python2.7/site-packages/pkg\u resources/\uuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
module=\uuuu导入(self.module\u name,fromlist=[''\uuuu name\uuuuuuu'],级别=0)
文件“/local/workdir/maloge/nanocorrêu test/nanocorr/nanocorrêve/lib/python2.7/site-packages/jptools/correct.py”,第21行,in
从pbtools.pbdagcon.q_sense导入输出_dag_信息
文件“/local/workdir/maloge/nanocorr\u test/nanocorr/nanocorr\u ve/lib/python2.7/site-packages/pbtools/pbdagcon/q_sense.py”,第50行,in
从pbcore.io导入FastaReader
文件“/programs/python/lib/python2.7/site-packages/pbcore-1.0.0-py2.7.egg/pbcore/io/_-init___;.py”,第31行
从.BasH5IO导入*
文件“/programs/python/lib/python2.7/site packages/pbcore-1.0.0-py2.7.egg/pbcore/io/BasH5IO.py”,第37行,在
导入h5py,numpy作为np,os.path作为op
文件“/programs/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg/h5py/__init_.py”,第13行
从…起导入错误
ImportError:/programs/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg/h5py//u errors.so:未定义符号:pyunicodecutf8
我已经找到了有关的详细信息,但我认为问题的根源在于回溯清楚地显示了从/local virtualenv站点包导入的模块到/programs中另一个站点包目录的转换


我的问题如下:考虑到我在两个不同的位置安装了相同的python包,一个在系统范围内,另一个在virtualenv中,我如何确保其他程序正确地从同一virtualenv sit packages目录中导入所有模块。我以为这会自动完成。我不能100%确定这是导致错误的唯一原因,但能够修复这一问题将有助于进一步调试

这取决于您如何设置环境
virtualenv
有一个标志选项,强制它不使用系统站点包

virtualenv --no-site-packages my_env
这是最新版本(>=1.7)的默认行为


如果您定义了一个
PYTHONPATH
环境变量,这也会影响您的
virtualenv
环境。

这取决于您如何设置环境
virtualenv
有一个标志选项,强制它不使用系统站点包

virtualenv --no-site-packages my_env
这是最新版本(>=1.7)的默认行为


如果您定义了一个
PYTHONPATH
环境变量,这也会影响您的
virtualenv
环境。

我定义了一个PYTHONPATH变量,它指定/programs/python/lib/python2.7/site-packages。删除PYTHONPATH变量应该可以解决您的问题。默认python应该已经在site packages目录中查找了,即使没有在PYTHONPATHGreat中定义它,我也会尝试一下。谢谢。它原来是PYTHONPATH变量,因为我正在运行一个版本的virtualenv>=1.7。再次感谢。我已经定义了一个PYTHONPATH变量,它指定/programs/python/lib/python2.7/site-packages。删除PYTHONPATH变量应该可以解决您的问题。默认python应该已经在site packages目录中查找了,即使没有在PYTHONPATHGreat中定义它,我也会尝试一下。谢谢。它原来是PYTHONPATH变量,因为我正在运行一个版本的virtualenv>=1.7。再次感谢。