簡體   English   中英

如何將python包安裝到/usr/local/bin?

[英]How do I install a python package to /usr/local/bin?

我正在嘗試在我的 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 並且它工作正常並且導入錯誤沒有't發生。如何安裝包以便可以在任何目錄中導入模塊? 提前致謝...

嘗試使用 pip 安裝您的軟件包

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

如此處所述使用 pip 將 Python 包安裝到不同的目錄中? 我會建議閱讀什么是 1. pip 2. virtualenv

祝你好運:)

編輯:我發現這個包是用 pip 安裝的,比如:

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

目前,您正在使用scripts標簽來安裝您的 Python 代碼。 這會將您的代碼放在/usr/local/bin ,它不在PYTHONPATH

根據文檔,當您想安裝可執行腳本(您想從命令行調用的東西)時使用scripts 否則,您需要使用packages

我的方法是這樣的:

  • 在庫中安裝pyduino/pyduino.py類似packages=['pyduino']
  • 創建一個能夠調用已安裝腳本的包裝器(shell 或 python)並通過scripts=[...]

為您的模塊使用packages標簽會將其安裝在/usr/local/lib/python... ,它位於PYTHONPATH 這將允許您使用import pyduino.pyduino.*類的內容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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM