How do I get mod_wsgi for Apache2 that was compiled for Python 3.6.1?

(或任何future 的Python版本)

我在Django 1.11中使用Python 3.6.1虚拟环境,除了Apache 2.4的mod_wsgi是为Python/3.5.1+编译的,并且正在使用Python/3.5.2,所以我的Python 3.6.1代码失败,因为我使用了3.5.2中没有的新功能

虽然mod_wsgi似乎没有使用我的Python 3.6.1虚拟环境(尽管根据错误日志(log),它正试图将其用于Django),但设置我的系统所涉及的所有其他配置和安装似乎都很好(在守护程序模式下运行)...

I used: sudo apt-get install libapache2-mod-wsgi-py3安装Apache 2.4的mod_wsgi

I used: ./configure --with-python=/usr/local/bin/python3.6makemake install一起安装适用于Python 3.6的mod_wsgi

I must be doing something wrong - please correct me!

这是我的Apache错误日志(log)(清理了一点)-是的,我知道它在f""字符串行失败(python 3.6功能不在3.5中)

[wsgi:warn] mod_wsgi: Compiled for Python/3.5.1+.
[wsgi:warn] mod_wsgi: Runtime using Python/3.5.2.
[wsgi:warn] AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/3.5.2 configured -- resuming normal operations
[wsgi:warn] AH00094: Command line: '/usr/sbin/apache2'
[wsgi:error] mod_wsgi (pid=12963): Target WSGI script '/home/jamin/www/dev.tir.com/tir/tir/wsgi.py' cannot be loaded as Python module.
[wsgi:error] mod_wsgi (pid=12963): Exception occurred processing WSGI script '/home/jamin/www/dev.tir.com/tir/tir/wsgi.py'.
[wsgi:error] Traceback (most recent call last):
[wsgi:error]   File "/home/jamin/www/dev.tir.com/tir/tir/wsgi.py", line 21, in <module>
[wsgi:error]     application = get_wsgi_application()
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[wsgi:error]     django.setup(set_prefix=False)
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
[wsgi:error]     apps.populate(settings.INSTALLED_APPS)
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/apps/registry.py", line 116, in populate
[wsgi:error]     app_config.ready()
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/contrib/admin/apps.py", line 23, in ready
[wsgi:error]     self.module.autodiscover()
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
[wsgi:error]     autodiscover_modules('admin', register_to=site)
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/utils/module_loading.py", line 50, in autodiscover_modules
[wsgi:error]     import_module('%s.%s' % (app_config.name, module_to_search))
[wsgi:error]   File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
[wsgi:error]     return _bootstrap._gcd_import(name[level:], package, level)
[wsgi:error]   File "<frozen importlib._bootstrap>", line 986, in _gcd_import
[wsgi:error]   File "<frozen importlib._bootstrap>", line 969, in _find_and_load
[wsgi:error]   File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
[wsgi:error]   File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
[wsgi:error]   File "<frozen importlib._bootstrap_external>", line 665, in exec_module
[wsgi:error]   File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
[wsgi:error]   File "/home/jamin/www/dev.tir.com/tir/company/admin.py", line 13, in <module>
[wsgi:error]     from .forms import AdminInteractionForm
[wsgi:error]   File "/home/jamin/www/dev.tir.com/tir/company/forms.py", line 87
[wsgi:error]     resp = f"Hi {user.first_name}, you'll need to login to send any more suggestions. \\
[wsgi:error]                              \\n\\nFirst Time? Check your email/spam for login instructions from us."
[wsgi:error]                                                                                        
[wsgi:error]                                                                                                   ^
[wsgi:error] SyntaxError: invalid syntax

*还有提尔.com是我实际网站的简写——我和那个域名没有任何关系

推荐答案

执行以下操作.

卸载你的系统mod_wsgi包.

sudo apt-get remove libapache2-mod-wsgi-py3

使用pip安装mod_wsgi,最好安装到Python虚拟环境中.确保pip适用于您想要使用的Python版本.

pip install mod_wsgi

显示要添加到Apache配置文件的配置,以通过运行以下命令加载此mod_wsgi:

mod_wsgi-express module-config

获取上述命令的输出以显示配置并添加到Apache配置.

向Apache添加配置以加载hello world WSGI应用程序,以测试其工作情况.

有关基于pip的安装,请参阅详细信息:

Python-3.x相关问答推荐

为什么vs code返回错误—LocaleError:int对象没有属性where,但相同的代码运行在Google Colab上没有任何问题''''

具有多个值的极轴旋转和熔化/取消旋转(反转旋转)操作(Pandas 堆叠/取消堆叠交替/UDF覆盖)

如何在输入正确的用户名和密码时添加按钮?

按字母顺序排序列表 (OrderFilter),条件是值为 '' 的条目位于列表 DRF 的末尾

将数据框中的值与另一个数据框中的多列进行比较,以获取条目以有效方式匹配的列表列表

仅当从 USB 摄像头接收到新图像时才处理图像

pytorch 中 mps 设备的 manual_seed

缺失时推断的数据类可选字段

是否可以将多个 if 转换为数组?

每个数据行中每个数据帧值的总和

ValueError:找不到子字符串,我做错了什么?

Pandas 的 EMA 与股票的 EMA 不匹配?

Python中的多行日志(log)记录

如何将 Matplotlib 图形转换为 PIL Image 对象(不保存图像)

如何将二进制(字符串)转换为浮点值?

在python中打印下标

是否可以在每个路由的基础上限制 Flask POST 数据大小?

将列表列表转换为Python中的字典字典

异常被忽略是什么类型的消息?

如何在 Python 3.2 中退出?