使用 setup.py 安装的脚本引发 ImportError
Script installed with setup.py raises ImportError
我正在尝试使用 setup.py
为我的项目添加 运行 可用脚本。我将它添加到 setup
的 scripts=
参数中。当我从项目 运行 ./solver
中脚本工作正常。我用 sudo python setup.py install
安装它,并尝试用 solver
安装它 运行,但我得到 ImportError: No module named 'model'
。如何使用 setuptools 正确安装和 运行 我的脚本?
SOLVER/
solver/
model/
__init__.py
view/
__init__.py
controller/
__init__.py
__init__.py
main.py
solver <-- starts the app
setup.py
README.md
LICENCE
setup.py
:
#!/usr/bin/env python3
import os
from setuptools import setup, find_packages
setup(
name='SOLVER',
version='1.0.0',
description='SOLVER app test',
author=['me'],
license='BSD',
classifiers=['Programming Language :: Python :: 3 :: Only'],
packages=['solver'],
#packages=find_packages(exclude=["doc", "tests"]),
install_requires=['numpy>=1.10.4'],
scripts=['solver/solver'],
)
solver
:
#!/usr/bin/env python3
from solver import main
main.gui_mode()
您需要在 packages
参数中列出 所有 包,包括子包。您可以使用 find_packages
为您生成该列表。目前,您只是在 solver/
目录中安装 Python 文件。
from setuptools import setup, find_packages
setup(
...
packages=find_packages(),
...
)
您还应该使用 entry_points
而不是 scripts
,尤其是当您的所有脚本所做的只是导入和调用一个函数时。 Setuptools 将从入口点构建脚本,这些入口点使用正确的 Python 二进制文件来安装它们。
setup(
...
packages=find_packages(),
entry_points={
'console_scripts': [
'solver=solver.main:gui_mode'
]
...
}
您可以在开发模式下安装包来获取脚本,而不是自己编写。
pip install -e .
您也应该使用 pip
来安装到系统中。它会跟踪已安装的内容,以便您稍后可以将其卸载。
pip install .
我正在尝试使用 setup.py
为我的项目添加 运行 可用脚本。我将它添加到 setup
的 scripts=
参数中。当我从项目 运行 ./solver
中脚本工作正常。我用 sudo python setup.py install
安装它,并尝试用 solver
安装它 运行,但我得到 ImportError: No module named 'model'
。如何使用 setuptools 正确安装和 运行 我的脚本?
SOLVER/
solver/
model/
__init__.py
view/
__init__.py
controller/
__init__.py
__init__.py
main.py
solver <-- starts the app
setup.py
README.md
LICENCE
setup.py
:
#!/usr/bin/env python3
import os
from setuptools import setup, find_packages
setup(
name='SOLVER',
version='1.0.0',
description='SOLVER app test',
author=['me'],
license='BSD',
classifiers=['Programming Language :: Python :: 3 :: Only'],
packages=['solver'],
#packages=find_packages(exclude=["doc", "tests"]),
install_requires=['numpy>=1.10.4'],
scripts=['solver/solver'],
)
solver
:
#!/usr/bin/env python3
from solver import main
main.gui_mode()
您需要在 packages
参数中列出 所有 包,包括子包。您可以使用 find_packages
为您生成该列表。目前,您只是在 solver/
目录中安装 Python 文件。
from setuptools import setup, find_packages
setup(
...
packages=find_packages(),
...
)
您还应该使用 entry_points
而不是 scripts
,尤其是当您的所有脚本所做的只是导入和调用一个函数时。 Setuptools 将从入口点构建脚本,这些入口点使用正确的 Python 二进制文件来安装它们。
setup(
...
packages=find_packages(),
entry_points={
'console_scripts': [
'solver=solver.main:gui_mode'
]
...
}
您可以在开发模式下安装包来获取脚本,而不是自己编写。
pip install -e .
您也应该使用 pip
来安装到系统中。它会跟踪已安装的内容,以便您稍后可以将其卸载。
pip install .