【问题标题】:How to install a python package globally with manual setup.py?如何使用手动 setup.py 全局安装 python 包?
【发布时间】:2016-08-13 18:02:56
【问题描述】:

我正在尝试使用我编写的 setup.py 安装一个 python 包。setup.py 看起来像这样:

    from setuptools import setup
try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

setup(
    name = 'pyduino',
    description = 'PyDuino project aims to make python interactive with hardware particularly arduino.',
    url = '###',
    keywords = 'python arduino',
    author = '###',
    author_email = '###',
    version = '0.0.0',
    license = 'GNU',
    packages = ['pyduino'],
    install_requires = ['pyserial'],
    classifiers = [

        # How mature is this project? Common values are
        #   3 - Alpha
        #   5 - Production/Stable
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'Topic :: Software Development :: Build Tools', 
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5',
    ],
    scripts=['pyduino/pyduino.py'],
) 

但是这个包安装在目录/usr/local/bin.我不能在其他目录中导入包的模块。有没有办法全局安装它,我可以在所有目录中使用?提前谢谢....

【问题讨论】:

  • 您的代码是给定的脚本?此外,它应该是 script 还是 package*/*module?如果您指定setup 一个模块/包,它将被放置在您可以从everywere 导入它的地方。然而,脚本不是可导入的,它们应该执行
  • 我可以在 /usr/local/bin 中导入模块 pyduino 但不能在其他目录中。如果我将路径设置为 /usr/local/bin 则导入错误不会'不会发生。但我不想每次都设置路径。所以,无论如何要安装以便我可以使用我的模块?
  • 是的,我明白这一点。我的问题是:pyduinoscript 还是 module?如果您想从任何位置导入它,那么它是一个模块,您应该使用py_modules=['pyduino/pyduino.py'] 而不是使用scripts=...
  • 是的..对不起。它是一个脚本。它有一个类 pyduino。我想从 pyduino.py 导入那个类。那么,我该怎么做呢?
  • 正如我所说:如果你有一个模块,你想从任何地方导入,你只需将它放在py_modulespackages 下,如果它在一个包中。如果这仍然不清楚,我建议您在all 问题中澄清您正在处理的文件、它们在目录/包/模块中的结构以及您希望获得的最终结果安装时。

标签: python ubuntu setup.py


【解决方案1】:

如果我理解正确,您希望以与 pip install 命令相同的方式安装软件包。

首先你需要有一个合适的setup.py,例如:

import setuptools

packages = setuptools.find_packages(where='./src')

setuptools.setup(
    name="the_utility",
    version="1.0",
    packages=packages,
    include_package_data=True,
    description="Utility to execute command",
    long_description=open("README.md", "r").read(),
    package_dir={pkg: f"src/{pkg.replace('.', '/')}" for pkg in packages},
    install_requires=[line.strip() for line in open('requirements.txt', 'r').readlines()],
    extras_require={},
    classifiers=[],
    entry_points={
        'console_scripts': [
            'command_1 = module_dir.cli:function_1'
        ]
    })

然后,您必须运行python setup.py install 命令。然后,您将可以从终端命令行处获得您的包,除了一些虚拟环境

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2011-11-15
    • 2018-07-11
    • 2017-09-03
    相关资源
    最近更新 更多