如何将python包安装到/usr/local/bin?
我正试图在我的ubuntu上安装python软件包。我正试图通过我编写的安装脚本来安装它。setup.py脚本如下所示:如何将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
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']
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()
和如果
,让我们来看看。