Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python包安装到/usr/local/bin?_Python_Ubuntu_Installation - Fatal编程技术网

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

如何将python包安装到/usr/local/bin?,python,ubuntu,installation,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 pro

我正试图在我的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,但它工作正常,不会发生导入错误。如何安装软件包以便在任何目录中导入模块?提前感谢…

尝试使用此选项使用pip安装您的软件包

pip install --install-option="--prefix=$PREFIX_PATH" package_name
如本文所述 我建议你读一读你所说的。点子2。虚拟的

祝你好运:)

编辑:我发现该软件包安装了pip,如:

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

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

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

我的做法是:

    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'],
)
  • 在库中安装
    pyduino/pyduino.py
    程序包=['pyduino']
  • 创建一个能够调用已安装脚本的包装器(shell或python),并通过
    scripts=[…]
  • 使用模块的
    软件包
    标记将其安装在
    /usr/local/lib/python…
    中,位于
    PYTHONPATH
    中。这将允许您使用类似于导入pyduino.pyduino.*
    的内容导入脚本

    对于包装器脚本部分:

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

    def main():
        # insert your code here
        pass
    
    if __name__ == '__main__':
        main()
    
    • 假设存在如上所述的
      def main()
    • 在树中创建目录
      scripts
      (与
      setup.py处于同一级别)
    • 创建一个文件
      scripts/pyduino
    • 脚本/pyduino
      中:

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

    您确定软件包已安装在
    /usr/local/bin
    中吗?您使用什么命令来安装?@LaurIvan是的,我确定。当我将路径设置为
    /usr/local/bin
    时,不会发生导入错误,我可以导入modules@LaurIvan我正在使用
    sudo python setup.py install
    安装软件包我正在使用setup.py.So安装软件包,我要安装的命令是
    python setup.py install
    ,而不是使用pip。我认为您的答案适用于将使用pip安装的软件包。有没有关于如何手动安装的建议?现在我更仔细地阅读了这个问题,您似乎遇到了一个环境变量问题,因为$PYTHONPATH中没有/usr/local/bin。尝试这样做-将pemanently/usr/local/bin添加到$PYTHONPATH中,如下所示:1。打开~/.bashrc文件并将其添加到导出PYTHONPATH=“${PYTHONPATH}:/my/other/path”注销,登录以加载~/.bashrc并尝试导入包。当我在默认的站点包文件夹外安装包时,我自己就这样做了。让我知道它是如何运行的是啊,这就是我在搜索答案时所知道的。所以,没有直接的修复方法?我的意思是使用其他方法,因为我想分发此代码。除了向$PYTHONPATH添加额外的路径外,我看不到python可执行文件以其他方式知道/usr/local/bin中有包,因此,可能还有其他方法,但-为什么麻烦:)这似乎很直截了当,正如我所说,我想将代码分发给人们,我不想看到他们面临像我这样的问题。因此,这就是为什么我需要一种更简单的方法:)完美。但我仍然没有得到第二部分,即创建包装器(shell或python)能够调用已安装的脚本,并通过脚本=[…]进行安装。脚本中应该保留什么?包装器是什么?很抱歉给您带来不便…您是否有
    defmain()
    如果
    ,让我们来看看。