我想创建一个名为myscript
的模块,该模块可以从任何目录通过命令行运行。
我创建了一个setup.py
文件,如下所示:
import setuptools
setuptools.setup(
name='myscript',
version='1.0',
packages=['lib.myscript'],
install_requires=['setuptools', 'pandas >= 0.22.0', 'numpy >= 1.16.0'],
python_requires='>=3.5'
)
运行python setup.py install
之后,除了脚本所在的目录之外,我仍然无法从任何地方运行python -m myscript
。
我的文件夹结构如下:
lib
myscript
__init__.py (empty)
__main__.py (the code that should run)
setup.py
答案 0 :(得分:1)
为此,您必须在entry_points
中设置setup.py
功能(如果我正确理解了您的问题)。
您的setup.py
变为:
import setuptools
setuptools.setup(
name='myscript',
version='1.0',
packages=setuptools.find_packages(),
install_requires=['setuptools', 'pandas >= 0.22.0', 'numpy >= 1.16.0'],
python_requires='>=3.5'
entry_points={
'console_scripts': [
'myscript=myscript.__main__:main' # or any specific function you would like
]
},
)
__main__
是文件名(在您的情况下)。 main
是一个函数(您可以将其更改为所需的任何函数)。 myscript
是您的命令。
现在您可以运行了(可能是myscript
,您可以运行):
python -m pip install yourpackage
然后,您可以在任何地方运行脚本:
myscript
编辑:
按如下所示排列文件结构:
myscript
myscript
__init__.py (empty)
__main__.py (the code that should run)
setup.py