1

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

要重现错误:

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
4

2 回答 2

2

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

于 2013-06-05T16:05:07.557 回答
0

Python3 使用 distutils 并将setup()采用requires关键字参数。从文档

可以通过向setup()提供requires关键字参数来指定对其他 Python 模块和包的依赖。

在您的setup.py脚本中更改install_requires为。requires

于 2013-06-05T11:57:45.403 回答