如何从任何目录运行Python模块
我想创建一个名为如何从任何目录运行Python模块,python,setuptools,Python,Setuptools,我想创建一个名为myscript的模块,它可以通过命令行从任何目录运行 我创建了一个如下所示的setup.py文件: lib myscript __init__.py (empty) __main__.py (the code that should run) setup.py 导入设置工具 setuptools.setup( name='myscript', version='1.0', packages=['lib.myscript'], 安装需要=['setupto
myscript
的模块,它可以通过命令行从任何目录运行
我创建了一个如下所示的setup.py
文件:
lib
myscript
__init__.py (empty)
__main__.py (the code that should run)
setup.py
导入设置工具
setuptools.setup(
name='myscript',
version='1.0',
packages=['lib.myscript'],
安装需要=['setuptools','pandas>=0.22.0','numpy>=1.16.0'],
python_需要='>=3.5'
)
在运行了python setup.py install
之后,我仍然无法从脚本所在的目录以外的任何地方运行python-m myscript
我的文件夹结构如下所示:
lib
myscript
__init__.py (empty)
__main__.py (the code that should run)
setup.py
为此,您必须在
setup.py
中设置entry\u points
函数(如果我正确理解了您的问题)
您的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
]
},
)
这里的\uuuu main\uuuu
是一个文件名(在您的情况下)。而main
是一个函数(您可以将其更改为您想要的任何函数)。而myscript
是您的命令
现在您可以运行(在您的情况下,可能是myscript
):
然后,您可以从任何位置运行脚本:
myscript
编辑:
按如下方式排列文件结构:
myscript
myscript
__init__.py (empty)
__main__.py (the code that should run)
setup.py
关于
python-m lib.myscript
?我使用了您提供并运行python setup.py install
和python-m pip install myscript
的确切的setup.py
参数,但是我仍然收到一个python错误,说没有名为myscript
的模块,我编辑了我的答案,此外,您还必须根据需要修改setup.py
文件,并且您可能希望在安装之前清理pip缓存