猿问

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

最近我为 PyPI 创建了一个 python 脚本。您可以使用 pip install. pip install问题是,当您位于ScriptsPython 本地化的文件夹中时,您只能执行使用 下载的脚本( 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',

)


MMMHUHU
浏览 101回答 2
2回答

波斯汪

您可以指定entry_pointsin setup.py,例如setuptools.setup(    # ...    entry_points = {        'console_scripts': [            'boston_housing = boston-housing-main:main'        ]    },)这将导致pip install在某个地方安装一个包装器/usr/local/bin/boston_housing,基本上拉入模块boston-housing-main并运行其main()功能。您可能想scripts用这个替换条目,尽管您本身没有理由不能同时拥有两者。

大话西游666

制作全局可访问的 Python 脚本的一种方法是让您的用户调用模块本身。如果您的包名为“boston-housing-prediction”,您的用户将能够使用以下命令从任何地方调用您的脚本:python -m boston-housing-prediction这样做是在你的包中调用一个__main__.py文件。这就像任何其他 Python 脚本一样,因此它可以正常接受参数。您所要做的就是将您的脚本重命名为__main__.py并将其放入包目录(不是包含 setup.py 的文件夹,而是放入包含包脚本的文件夹),或创建一个__main__.py调用您的脚本的新脚本(您可以只导入脚本,如果它们在同一个文件夹中)。这种方法的好处是它独立于平台,只依赖于包的正确安装。它根本不依赖操作系统。
随时随地看视频慕课网APP

相关分类

Python
我要回答