我有一个简单的python包,在运行时可以导入而没有问题:
python setup.py develop
但不是在运行时
python setup.py install
运行安装时没有错误*但是当我尝试导入它时出现no module named...
错误,即使我在运行pip list
时可以看到包。我只安装了python 2.7,我没有使用virtualenv,所以我不明白为什么develop
有效但install
没有。
(另外运行build
然后install
也失败了)
答案 0 :(得分:0)
发布有关此内容的信息,因为它影响了我。要知道的重要一点是,即使软件包的依赖关系已损坏,构建软件包的distutils也会对其进行编译。,请参见here。如果在运行python setup.py install
时看到输出,则可能会确定问题的根源。
对我来说,我有一个名为“ whatever”的程序包,其全名非常清楚,但实际上很烦人。因此,我希望命令本身是缩写,例如“ we”。
最初,我的setup.py看起来像这样:
from setuptools import setup
setup(
name='we',
version='3.0.3',
py_modules=['we'],
install_requires=[
...
],
scripts=['whatever/bin/we']
)
我的文件夹结构如下:
├── setup.py
├── whatever
│ ├── bin/
│ │ ├── we
│ ├── __init__.py
│ ├── other_stuff/
在we
内,我导入完整的程序包(具有单击界面):
#!/usr/bin/env python
from whatever.cli import cli
cli()
运行安装程序时,我看到了以下内容:
$ python setup.py install
running install
running bdist_egg
running egg_info
writing we.egg-info/PKG-INFO
writing dependency_links to we.egg-info/dependency_links.txt
writing requirements to we.egg-info/requires.txt
writing top-level names to we.egg-info/top_level.txt
file we.py (for module we) not found
reading manifest file 'we.egg-info/SOURCES.txt'
writing manifest file 'we.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.13-x86_64/egg
running install_lib
running build_py
file we.py (for module we) not found
file we.py (for module we) not found
warning: build_py: byte-compiling is disabled, skipping.
...
问题在于,没有名为我们的 module ,只有cli工具。删除py_modules
行并将其替换为packages
,指向完整的 package 文件夹名称对我来说解决了这一问题:
from setuptools import setup
setup(
name='we',
version='3.0.3',
packages=['whatever'],
install_requires=[
...
],
scripts=['whatever/bin/we']
)
现在,当我运行we
时,将执行任何cli软件包。希望这对以后的读者有所帮助。