尝试从命令行安装uWSGI
pip install uwsgi
导致长堆栈跟踪,这是它的结尾:
/usr/bin/x86_64-linux-gnu-ld: /usr/local/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.a(parser.o):
relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object;
recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
*** error linking uWSGI ***
----------------------------------------
Command "/home/user/venv/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-ve0nx9k8/uwsgi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-l_7f937a/install-record.txt --single-version-externally-managed --compile --install-headers /home/user/venv/include/site/python3.6/uwsgi" failed with error code 1 in /tmp/pip-install-ve0nx9k8/uwsgi/
我正在使用Python 3.6。 Python 2和Python 3.7均可运行,但是不幸的是我需要使用Python 3.6。虚拟环境中没有别的东西了,这是ubuntu的全新安装。
答案 0 :(得分:0)
该错误表示链接器要构建一个 P 位置 I 独立的 E 可执行文件(PIE对象),但是它不能因为libpython3.6m.a
库是在没有这种链接支持的情况下构建的。
使用通过pyenv
安装的Python时,我遇到了这个问题。
要在这种情况下解决此问题,请使用特殊的编译器标志重新安装Python:
CONFIGURE_OPTS=--enable-shared pyenv install 3.7.7 # use your Python version
在他们的wiki中提到了这一点,但是对于我来说,尚不清楚何时需要这样的标记。
答案 1 :(得分:-1)
我在尝试使用系统python构建时遇到此错误。当我切换到pyenv并安装了自定义python版本时,uWSGI的安装就很好了。