如何将python包安装到/usr/local/bin?

2024-06-25 22:49:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在我的ubuntu上安装一个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
        #   4 - Beta
        #   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目录中。但是,当我导入/usr/local/bin目录外的模块时,会发生导入错误。我尝试将路径更改为/usr/local/bin,但它工作正常,不会发生导入错误。如何安装程序包以便导入任何目录中的模块?提前谢谢。。。


Tags: frompyimport目录project脚本binusr
2条回答

目前,您正在使用scripts标记来安装python代码。这将把您的代码放入/usr/local/bin,而不是PYTHONPATH

根据the documentation,当您想安装可执行脚本(您想从命令行调用的东西)时,可以使用scripts。否则,您需要使用packages

我的方法是这样的:

  • 在库中安装pyduino/pyduino.py,类似于packages=['pyduino']
  • 创建一个包装器(shell或python),能够调用已安装的脚本并通过scripts=[...]安装它

使用模块的packages标记将其安装在/usr/local/lib/python...中,即PYTHONPATH。这将允许您导入带有import pyduino.pyduino.*之类内容的脚本。

对于包装器脚本部分:

最佳实践是,如果脚本是从命令行触发的,则隔离要执行的代码,例如:

def main():
    # insert your code here
    pass

if __name__ == '__main__':
    main()
  • 假设上面有一个def main()
  • 在树中创建目录scripts(与setup.py处于同一级别)
  • 创建文件scripts/pyduino
  • scripts/pyduino中:

    #!/usr/bin/env python
    from pydiuno.pyduino import main
    
    if __name__ == '__main__':
        main()
    
  • 在setup.py代码中添加一个'scripts=['scripts/pyduino']

尝试使用以下命令安装带有pip的软件包

pip install --install-option="--prefix=$PREFIX_PATH" package_name

如本文所述Install a Python package into a different directory using pip? 我建议你读一下什么是1。第二点。虚拟人

祝你好运:)

编辑:我发现软件包安装了pip,如下所示:

pip install --install-option="--prefix=/usr/local/bin" pyduino_mk

相关问题 更多 >