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

时间:2016-08-12 08:36:02

标签: python ubuntu installation

我正在尝试在我的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,它运行正常,导入错误没有发生。如何安装软件包以便我可以在任何目录中导入模块?提前谢谢......

2 个答案:

答案 0 :(得分:0)

尝试使用此

安装您的软件包
pip install --install-option="--prefix=$PREFIX_PATH" package_name

如此处所述Install a Python package into a different directory using pip? 我建议阅读1. pip 2. virtualenv

祝你好运:)

编辑:我发现软件包的安装方式如下:

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

答案 1 :(得分:0)

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

根据the documentation,如果要安装可执行脚本(要从命令行调用的内容),则使用PYTHONPATH。否则,您需要使用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
  • <{1}}中的
  • scripts/pyduino
  • 在您的setup.py代码
  • 中添加`scripts = ['scripts / pyduino']