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

How to run a Python module from any directory

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

为此,您必须在 setup.py 中设置 entry_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
        ]
    },
)

这里 __main__ 是一个文件名(在你的例子中)。 main 是一个函数(您可以将其更改为您想要的任何函数)。 myscript 是你的命令。

现在您可以 运行(在您的情况下可能 myscript):

python -m pip install yourpackage

然后您可以从任何地方运行您的脚本:

myscript

编辑:

像这样安排文件结构:

myscript
  myscript
    __init__.py (empty)
    __main__.py (the code that should run)
  setup.py