如何导入Python包?

4

我刚接触Python,需要使用一个基于Python的工具,名为chromosomer,它导入了一些Python包,其中包括bioformats。Bioformats有许多模块,包括bed。运行chromosomer时,出现错误:

smeeta:~$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import chromosomer
>>> from chromosomer.cli import bioformats
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/chromosomer/cli.py", line 8, in <module>
    import bioformats.bed
ImportError: No module named bed
>>> import bioformats
>>> import bioformats.bed
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named bed
>>> 

我该如何安装chromosomer包及其相关的依赖包?

感谢您的编辑和下面的回答;但是我已经使用sudo -E pip install --index-url=http://pypi.python.org/simple/ -r requirements.txt安装了chromosomer及其依赖项。在这样做之后,我不得不将/usr/local/lib/python2.7/dist-packages/<package_name>/添加到我的bashrc中的PYTHONPATH中。我仍然遇到了上述的导入错误。 - Meeta Sunil
"from chromosomer.cli import chromosomer" 对我来说很有效,请参见我的回答的最后一部分。我的建议是,删除/卸载 chromosomer 包以及 bashrc 中的路径行-然后重新安装它。 - Nabeel Ahmed
3个回答

3

1
在Python中,大多数东西都是使用pip命令安装的,这是安装Python包的推荐工具。
同时,您是否尝试过:
pip install python-bioformats

是的,我已经安装了python-bioformats;但是它没有解决我的问题。 - Meeta Sunil

0

对于除默认包之外的任何包,您需要在导入/使用它们之前安装它们。

安装Python包的最常见和方便的方法是通过pip包管理实用程序。

1. 安装pip

sudo apt-get install python-pip  # for Debian/Ubuntu
sudo yum -y install python-pip  # for CentOS/RHEL

注意:对于Python 2.7.9+和3.4+,pip已经预装。


2. 安装Python包

sudo pip install chromosomer

它将安装bioinformatsfuturepyfaidxPyVCFsix作为依赖包。 注意:如果已经是root用户或使用vitualenv,则不需要sudo

验证 - 可以使用pip freeze命令验证安装:

(venv_bioinformatics)[nahmed@localhost virtualenvs]$ pip freeze
bioformats==0.1.14
chromosomer==0.1.3
future==0.16.0
pyfaidx==0.4.8.1
PyVCF==0.6.8
six==1.10.0
wheel==0.24.0

测试 - 我安装了 Chromosomer 并导入,运行良好:

(venv_bioinformatics)[nahmed@localhost virtualenvs]$ python 
Python 2.7.5 (default, Sep 15 2016, 22:37:39) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from chromosomer.cli import chromosomer
>>> 

你尝试在Python shell中导入了吗?同时,请核对一下软件包的版本是否与我分享的一致,因为这对我来说是正常工作的。 - Nabeel Ahmed
另外,如果我只导入包,它会被导入,但是如果我尝试访问模块,它会抛出错误。 - Meeta Sunil
请分享完整的会话,即回溯(错误)和导致问题的导入语句。将其添加到问题中作为编辑1:(在当前内容下方)。 - Nabeel Ahmed
是的,在Python shell中,包可以顺利导入,但不包括它们的模块。 import <package_name> 不会出现任何错误,而 from <package_name> import module 则会出现错误。是的,大多数已安装的包的版本都相同,除了six == 1.5.2和Python为2.7.6。 - Meeta Sunil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接