Я скомпилировал uswgi из исходного кода и обнаружил, что sys.path отличается при установке python с помощью make install и make altinstall.

1 · установить python3.6.8, используя make install

cd Python-3.6.8 ./configure make make install cd uwsgi-2.0.18 python3.6 uwsgiconfig.py --build 2. установить python3.6.8 с помощью make altinstall

cd Python-3.6.8 ./configure make make altinstall python3.6 uwsgiconfig.py --build

Я получил бинарный файл uswgi и переместил его в каталог моего проекта.

Моя структура каталогов:

testuwsgi/ |-- foobar.py |-- lib |-- uwsgi foobar.py - это мой файл приложения uwsgi. import sys print(str(sys.path)) def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) response = str(sys.path) print(str(sys.path)) return [response] каталог lib, скопированный из /usr/local/lib/python3.6/.

Я запустил свое приложение uwsgi:./uwsgi --http:9090 --wsgi-file foobar.py

Наконец результаты были другими.

  1. используйте make install, напечатанный sys.path: ['.', '/root/testuwsgi', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/site-packages/requests-2.21.0-py3.6.egg', '/usr/local/lib/python3.6/site-packages/cbor-1.0.0-py3.6.egg']

  2. используйте make altinstall напечатанный sys.path: ['.', '/root/testuwsgi', '/root/testuwsgi/lib/python36.zip', '/root/testuwsgi/lib/python3.6', '/root/testuwsgi/lib/python3.6/lib-dynload', '/root/testuwsgi/lib/python3.6/site-packages']

Когда я изменил свою директиву проекта uwsgi, uswgi, скомпилированный вторым методом, также изменил sys.path в соответствии с путем direcotry.

Кажется, что 'make install' и 'make altinstall' заставляют uswgi устанавливать разные sys.path.

Я хочу знать, почему uswgi ведет себя по-разному, когда Python был установлен с помощью make install и make altinstall.

0