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