如何从任何目录运行Python模块

时间:2019-06-12 00:44:51

标签: python setuptools

我想创建一个名为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

1 个答案:

答案 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