我想从Windows切换到Linux(Ubuntu)编写我的python程序,但我无法让事情发挥作用。问题在于:我可以看到在Ubuntu中预装了很多模块(如numpy,pandas,matplotlib等)。它们很好地位于/ host / Python27 / Lib / site-packages目录中。但是当我编写测试python脚本并尝试执行它时,每当我尝试导入模块时它就会给我一个ImportError(例如import numpy as np
给我ImportError: No module named numpy
)。当我在命令行中输入which python
时,我会得到/usr/bin/python
路径。我想我可能需要改变与python路径相关的东西,但我不知道该怎么做。
答案 0 :(得分:10)
您可以在终端中使用以下命令查看PYTHONPATH
中的文件夹。
python -c "import sys, pprint; pprint.pprint(sys.path)"
我猜/host/Python27/Lib/site-packages
不会在那里(听起来不像普通的python路径。你是如何安装这些软件包的?)。
如果您要向PYTHONPATH
添加文件夹,请使用以下内容:
export PYTHONPATH=$PYTHONPATH:/host/Python27/Lib/site-packages
以下是个人使用Python进行开发的建议:
使用virtualenv
。它是一个非常强大的工具,可以创建沙盒python环境,因此您可以安装模块并将它们与主解释器分开。
使用pip
- 创建virtualenv
并激活它后,您可以使用pip install
为您安装软件包。例如pip install numpy
会将numpy安装到您的虚拟环境中,并且只能从这个virtualenv访问。这意味着您还可以安装不同的版本进行测试等。非常强大。我建议使用pip
来使用ubuntu apt-get install
来安装你的python包,因为你更有可能获得更新版本的模块(apt-get
依赖于包装最新版python的人库可能不适用于pip
)这样多的库。
编写可执行文件(chmod +x my_python_script.py
)的python脚本时,请确保将#!/usr/bin/env python
放在顶部,因为这会在您的虚拟环境中获取python解释器。如果你没有(并放#!/usr/bin/python
)那么运行./my_python_script.py
将始终使用系统python解释器。
答案 1 :(得分:1)
/host/Python27/Lib/site-packages
不是linux安装的默认python目录。
正常的python安装(和python包)应该在/usr/lib
或/usr/lib64
下找到,具体取决于您的处理器架构。
如果你想检查除了这些目录之外python正在搜索的位置,你可以使用带有以下命令的终端:
echo $PYTHONPATH
如果未列出/host/Python27/Lib/site-packages
路径,请尝试使用以下命令并再次尝试:
export PYTHONPATH=$PYTHONPATH:host/Python27/Lib/site-packages
如果这应该有效并且您不想在每次要使用这些包时在终端中写入此内容,只需将其放入.bashrc
文件夹中名为home
的文件中(通常{ {1}})。
答案 2 :(得分:0)
在安装其他python库时,指定要安装到的pip版本,如果使用的是python2,则输入以下语法:
pip2 install <package>
对于python3
pip3 install <package>