我一直在关注这教程中指出
$PYTHONPATH 变量似乎随机取消设置,并导致后续步骤出现错误。
然后将以下内容添加到~/.bashrc
:
export PYTHONPATH='/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PILcompat'
我这样做了,然后尝试使用pip install -r requirements.txt
安装所有软件包时,我遇到了很多错误,如下所示这里。
我认为这与 PYTHONPATH 的问题有关。为什么我会收到此错误?我可以做些什么才能在使用 python 和 pip 时不出现错误?谢谢。
编辑:
我查看了其他关于在 Ubuntu 上设置 Flask 的教程,没有一个提到要更改PYTHONPATH
。我遵循本教程并尝试在虚拟环境中安装软件包,但出现错误。我尝试安装一个名为 python-bcrypt 的软件包,但在终端中出现以下错误:
bcrypt/bcrypt_python.c:17:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
我尝试安装 pycrypto 并得到相同的结果:
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/python2.7 -c src/MD2.c -o build/temp.linux-x86_64-2.7/src/MD2.o
src/MD2.c:31:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
这有什么原因吗?谢谢。
答案1
安装 Python 开发库为我解决了这个问题(从这个答案中发现:https://stackoverflow.com/a/21530768/733547)。
sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
答案2
“随机取消设置”?不。
环境PYTHONPATH
变量由进程设置(可能正在运行bash
)。如果PYTHONPATH
是export
,则会将的副本PYTHONPATH
传递给由此进程启动的任何进程(或它们启动的任何进程)。
如果某个子进程PYTHONPATH
通过以下方式销毁:
unset PYTHONPATH
或者
PYTHONPATH=
那么坏的PYTHONPATH
仅对销毁它的进程以及该进程(或其子进程)随后启动的任何进程可见。
最终,随着子进程完成并退出,出现问题的进程PYTHONPATH
也将退出,并且其(错误)定义PYTHONPATH
也将消失。
启动被破坏的子进程PYTHONPATH
将具有 UNdestroyed 定义,并且将始终具有它。
我怀疑“本教程”缺乏对 Linux 的了解,并且可能是危险的。
您的PYTHONPATH
包含以下目录:
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/PILcompat
对于 $PYTHONPATH 中的每个目录,问自己以下问题:
它是否存在于我的系统中?权限是否表明我可以访问它?
/bin/ls -ld $(echo "$PYTHONPATH" | tr ":" " ")
我可以访问目录内的文件吗?
/bin/ls -l $(echo "$PYTHONPATH" | tr ":" " ")
该目录是否包含 Python 或 Python 程序或任何您想要运行所需的文件,并通过 访问$PYTHONPATH
。
查看第一个错误(不是警告,不是信息,而是“错误”)消息,我们会看到:
Running setup.py (path:/tmp/pip_build_ubuntu/MySQL-python/setup.py) egg_info for package MySQL-python
sh: 1: mysql_config: not found
搜索手册页对于msql_config
产品:
trusty (1) mysql_config.1.gz
Provided by: libmariadbclient-dev_5.5.36-1_i386
NAME
mysql_config - get compile options for compiling clients
SYNOPSIS
mysql_config options
DESCRIPTION
mysql_config provides you with useful information for compiling your
MySQL client and connecting it to MySQL.
这意味着您尚未成功安装和配置MySQL
或MySQL client
,并且“本教程”试图让您执行的任何操作都需要MySQL
。