Почему метод установленного python приводит к другому sys.path в uwsgi? - PullRequest
0 голосов
/ 14 февраля 2019

Я скомпилировал 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

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

используйте 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']

используйте 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'.

...