我想从 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 路径相关的内容,但我不知道该怎么做。
3 回答
您可以在终端中使用以下命令来查看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 安装您的 python 包,apt-get install
因为您更有可能获得更新版本的模块(apt-get
依赖于打包最新版本的 python 库的人,并且可能无法用于与 ubuntu 一样多的库pip
)。在编写可执行的Python 脚本时
chmod +x my_python_script.py
(#!/usr/bin/env python
如果您不这样做(并且 put#!/usr/bin/python
),那么运行./my_python_script.py
将始终使用系统 python 解释器。
/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
(通常/home/<username>
)。
安装其他python库时,指定要安装到的pip版本,如果是python2,则输入以下语法:
pip2 install <package>
对于python3
pip3 install <package>