python - 使我的 pypi 脚本可执行,而无需每次都指定脚本的路径

标签 python python-3.x setuptools pypi

最近我为 PyPI 创建了一个 python 脚本。您可以使用 pip install 下载。问题是当你位于 python 本地化的 Scripts 文件夹中时,你只能执行使用 pip install 下载的脚本(your_python_location/Scripts/myscript.py).
但这对用户来说是个麻烦。所以我想问一下,我怎样才能让你可以从任何地方执行脚本? (就像你可以在不指定 pip 位置的情况下使用 pip 一样)。我也不希望每个用户都需要设置脚本的路径。

我的 Setup.py(可能有用):

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

with open('requirements.txt') as f:
    requirements = f.read().splitlines()

setuptools.setup(
    name="boston-housing-prediction",
    version="0.2.0a0",
    author="xx",
    author_email="xxx@gmail.com",
    py_modules=["misc_libary", "polynomial_regression_libary", "linear_regression_libary"],
    scripts=["boston-housing-main.py"],
    description="Predict housing prices in boston.",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/XXX",
    packages=setuptools.find_packages(),
    classifiers=[
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
        'Programming Language :: Python :: 3.5',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7'
    ],
    keywords="regression meachine-learning housing_prices_boston learning_purpose",
    license="MIT",
    install_requires=requirements,
    python_requires='>=3.5',
)

最佳答案

你可以在setup.py中指定entry_points,比如

setuptools.setup(
    # ...
    entry_points = {
        'console_scripts': [
            'boston_housing = boston-housing-main:main'
        ]
    },
)

这将导致 pip install 在类似 /usr/local/bin/boston_housing 的地方安装一个包装器,它基本上引入了模块 boston-housing-main 并运行其 main() 函数。

你可能想用这个替换 scripts 条目,虽然没有理由本身你不能同时拥有这两个。

关于python - 使我的 pypi 脚本可执行,而无需每次都指定脚本的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58047658/

相关文章:

python - Pandas 在尝试删除重复项时仅删除某些列值

python - 是否可以为方法定义 sphinx 文档提供单独的新行

python - 如何使用 setuptools 为 windows 命令行安装 python 脚本?

python - 自定义安装后脚本未与 pip 一起运行

python将字符串拆分为具有相同语言字符的字符串

python - 比较 Pandas Dataframe 的匹配行和列的差异

python-3.x - 我在哪里可以获得 AWS 用户所做的事件日志

python - Selenium 函数中的引用变量

python - 我怎样才能改变我的代码来反转某些子字符串?

python - 无法在 linux mint 上安装 setuptools