2013-06-05 43 views
1

我创建了我的第一个包。当我尝试在新创建的virtualenv中使用pip安装它时,我收到一个错误,指出无法导入库,但它们被添加到setup.pyinstall_requires字段中。如果我在vierualenv之外做的话,一切都好。 我setup.py是在这里:https://github.com/tdi/pyPEPA/blob/dev/setup.pyPython包似乎无视我的要求

要重现错误:

mkvirtualenv something -p /usr/bin/python3 
workon something 
pip install pypepa 

Downloading/unpacking pypepa 
Running setup.py egg_info for package pypepa 
Traceback (most recent call last): 
    File "<string>", line 16, in <module> 
    File "/home/tdi/.virtualenvs/koza/build/pypepa/setup.py", line 3, in <module> 
    import pypepa 
    File "./pypepa/__init__.py", line 6, in <module> 
    from pypepa.pepa_model import PEPAModel 
    File "./pypepa/pepa_model.py", line 6, in <module> 
    from pypepa.parsing.parser import PEPAParser 
    File "./pypepa/parsing/parser.py", line 5, in <module> 
    from pyparsing import Word, Literal, alphas, alphanums, nums, Combine, Optional, ZeroOrMore, Forward, restOfLine 
ImportError: No module named 'pyparsing' 
Complete output from command python setup.py egg_info: 
Traceback (most recent call last): 
File "<string>", line 16, in <module> 
File "/home/tdi/.virtualenvs/koza/build/pypepa/setup.py", line 3, in <module> 
import pypepa 
File "./pypepa/__init__.py", line 6, in <module> 
from pypepa.pepa_model import PEPAModel 
File "./pypepa/pepa_model.py", line 6, in <module> 
from pypepa.parsing.parser import PEPAParser 
File "./pypepa/parsing/parser.py", line 5, in <module> 
    from pyparsing import Word, Literal, alphas, alphanums, nums, Combine, Optional, ZeroOrMore, Forward, restOfLine 
ImportError: No module named 'pyparsing' 
---------------------------------------- 
Command python setup.py egg_info failed with error code 1 in  /home/tdi/.virtualenvs/koza/build/pypepa 
Storing complete log in /home/tdi/.pip/pip.log 
+0

为什么你使用'install_requires'而不是直接'require'? – brice

+0

@brice好的谢谢你,我有点困惑它 – Darek

回答

2

您的设置脚本导入pypepa,它导入导入pyparsing的pypepa.pepa_model,但pyparsing尚未安装(我们甚至还没有完成运行安装脚本以了解依赖关系是什么)。解决方法是在pypepa和setup.py中重复版本号(以便您可以删除导入),或者不在__init__.py中导入PEPAModel。

0

Python3使用的distutils和setup()将采取requires关键字参数。从the docs

Dependencies on other Python modules and packages can be specified by supplying the requires keyword argument to setup().

变化install_requiresrequiressetup.py脚本。

+0

要求从未实现的工具,不应该使用。 –

+0

@ÉricAraujo它应该怎么做呢? – Darek

+2

您可以使用install_requires,它不是官方的,但由许多工具或pip需求文件或buildout支持。 –