我正在尝试使用setup.py
为我的项目添加一个可运行的脚本。我将其添加到scripts=
的{{1}}参数中。当我从项目setup
运行脚本时,脚本运行正常。我使用./solver
安装它,并尝试使用sudo python setup.py install
运行它,但我得到solver
。如何使用setuptools正确安装和运行我的脚本?
ImportError: No module named 'model'
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
答案 0 :(得分:1)
您需要在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 .