我已经安装了 python-biopython 并在我的 python 脚本中成功使用了它,如下所示:
import Bio
但它最终停止工作,现在即使卸载并重新安装后,我也无法使用 python 2.7x 成功导入。我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named Bio
要求的输出:
apt-cache policy python-biopython 的输出:
python-biopython:
Installed: 1.63-1
Candidate: 1.63-1
Version table:
*** 1.63-1 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
100 /var/lib/dpkg/status
find $(python -c "import sys; print '\n'.join(sys.path)") -type d -name 'Bio' 的输出:
find: `/home/alex/anaconda/lib/python27.zip': No such file or directory
find: `/home/alex/anaconda/lib/python2.7/lib-old': No such file or directory
python -c "import sys; print '\n'.join(sys.path)" 的输出似乎没有列出 biopython:
/home/alex/anaconda/lib/python27.zip
/home/alex/anaconda/lib/python2.7
/home/alex/anaconda/lib/python2.7/plat-linux2
/home/alex/anaconda/lib/python2.7/lib-tk
/home/alex/anaconda/lib/python2.7/lib-old
/home/alex/anaconda/lib/python2.7/lib-dynload
/home/alex/anaconda/lib/python2.7/site-packages
/home/alex/anaconda/lib/python2.7/site-packages/Sphinx-1.3.1-py2.7.egg
/home/alex/anaconda/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-linux-x86_64.egg
/home/alex/anaconda/lib/python2.7/site-packages/setuptools-18.1-py2.7.egg
apt-cache policy python 的输出:
python:
Installed: 2.7.5-5ubuntu3
Candidate: 2.7.5-5ubuntu3
Version table:
*** 2.7.5-5ubuntu3 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
100 /var/lib/dpkg/status
答案1
我猜是 Python PATH 的问题。可能你的安装没有在 Biopython 安装文件的目录中查找包。
步骤 1——检查 Python PATH 和 Biopython 安装目录:
请使用以下命令检查 Python 2 的 PATH 设置:
python -c "import sys; print('\n'.join(sys.path))"
根据python-biopython
1.64 版本的软件包内容,它将安装Bio
软件包目录中的目录/usr/lib/python2.7/dist-packages/
,因此如果您的 Python PATH 中缺少此目录,我们已经发现了错误原因。
第 2 步 - 尝试临时修复:
PYTHONPATH
您可以在启动解释器之前通过设置 shell 的环境变量将目录添加到 Python PATH 变量中:
PYTHONPATH="/usr/lib/python2.7/dist-packages" python
在此 Python 会话中,您现在应该能够使用 Biopython 包。验证其是否有效后,我们可以继续...
步骤 3-使修复永久生效:
Python 有一个目录,它会在其中查找路径配置文件 ( *.pth
)。我们使用以下命令找出安装中的哪个目录:
PythonSiteDir=$(python -c "import site; site._script()" --user-site)
echo $PythonSiteDir
这首先将路径存储在变量中$PythonSiteDir
,然后将其输出到终端。 在您的例子中,它可能会显示目录/home/alex/anaconda/lib/python2.7/site-packages
,但如果没有,请使用相应的目录。
我们必须将自定义.pth
文件放入此目录中,因此首先我们要检查哪些路径配置文件已经存在,以确保不会意外覆盖现有文件。为了避免大量输入,我们使用之前创建的变量:
ls ${PythonSiteDir}/*.pth
此命令显示的所有文件名都已存在,可能未被使用。假设不在biopython_directory.pth
列表中,我们现在将创建此文件并让其包含Biopython
安装路径:
echo "/usr/lib/python2.7/dist-packages" > ${PythonSiteDir}/biopython_directory.pth
就这些了。现在唯一剩下的就是测试它是否有效。您可以再次开始使用 Biopython,也可以先使用上面的命令检查当前的 Python 路径:
python -c "import sys; print('\n'.join(sys.path))"
步骤 3 的来源/灵感:https://stackoverflow.com/a/12311321/4464570
答案2
我想以评论的形式回答,但我需要一些声誉才能发表评论。所以我在这里写。
我使用现成的 virtualbox qiime 系统。据我所知,在该系统中,QIIME 使用不同的路径设置方法。在“.bashrc”文件中,它使用 activate.sh 类似
source /home/qiime/qiime_software/activate.sh
在 activate.sh 文件中,你可以找到以下行
export PYTHONPATH=/home/qiime/.../:/home/qiime/.../:
/usr/local/lib/python2.7/dist-packages/`
您应该通过在路径后添加“:/usr/local/lib/python2.7/dist-packages/”来编辑文件,然后使用以下命令再次执行该文件
source /home/iime/qiime_software/activate.sh
我从您的问题和答案中找到了解决方案。谢谢。