我从源代码编译了uswgi,发现用make install和make altinstall安装python时sys.path不同。
1·使用“ make install”安装python3.6.8
cd Python-3.6.8
./configure
make
make install
cd uwsgi-2.0.18
python3.6 uwsgiconfig.py --build
2。使用'make altinstall'安装python3.6.8
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。
似乎“ make install”和“ make altinstall”使uswgi设置了不同的sys.path。
我想知道为什么当用'make install'和'make altinstall'安装python时uswgi表现出不同。