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