簡體   English   中英

Python Flask 在 Apache 中使用 mod_wsgi; 如何讓 venv 工作?

[英]Python Flask using mod_wsgi in Apache; how to get venv to work?

我一直在努力讓它發揮作用,到處搜索,上下翻頁,但似乎沒有找到答案。

我有帶有 mod_wsgi 的 Apache 和一個簡單的測試 Flask 應用程序。

我用這個讓它工作: https://www.jakowicz.com/flask-apache-wsgi/

然后我以某種方式發現 Apache mod_wsgi 使用了系統 python 並且我想使用 venv ( https://docs.python.org/3/library/venv.html )。

我的應用程序位於具有 venv 正常目錄結構的目錄中,但如何讓我的應用程序使用它?

我發現了這個: http://blog.dscpl.com.au/2014/09/using-python-virtual-environments-with.html

但是,如果我放入 python-home,我的應用程序就會失敗。

幾個問題:如何找到我的應用程序使用的 Python 版本? 我如何找到我的 mod_wsgi 版本? 如何讓我的應用程序使用我的 venv?

我是 Python 和 WSGI 的新手,我主要使用 PHP。

希望有人可以向我解釋該怎么做...

-- 羅尼

如何找到我的應用程序正在使用的Python版本?

請參閱文檔:

它為您提供了可以使用的測試。

我如何找到我的mod_wsgi版本?

使用WSGI environ詞典中的mod_wsgi.version鍵。 請參閱以下內容中的參考:

您還可以使用:

import mod_wsgi
print(mod_wsgi.version)

如何獲得我的應用程序以使用我的venv?

可以在以下位置找到有關使用虛擬環境的文檔:

如狀態所示,如果您的mod_wsgi使用系統Python,並且您想使用其他Python安裝或版本,則不能強制其使用其他安裝或版本。 必須針對要使用的特定Python版本編譯mod_wsgi二進制文件。

由於系統mod_wsgi軟件包通常是較舊的版本,而不是您要使用的Python版本,因此您應卸載系統mod_wsgi軟件包,並針對要使用的Python版本從源代碼安裝mod_wsgi。 為此,最簡單的安裝方法是使用pip install mod_wsgi 看到:

繼續問題的評論部分中的討論:

假設以下目錄具有在/venv文件夾中創建的虛擬環境:

- main.py
- /static
  - /js
  - /html
  - /css
- /venv
  - /bin
    - activate

要激活虛擬環境,從而使用Python的本地副本(而不是全局副本),必須使用以下命令:

. /venv/bin/activate

. 本質上是告訴終端窗口必須執行位於/venv/bin (假設我們在上述目錄的頂層)中的activate文件。 當您在終端窗口中的新行的開頭看到字符串(venv)時,您將知道命令成功。

現在, which命令將確認您正在使用Python的本地副本:

which python

現在您的虛擬環境已激活,您可以使用pip在該虛擬環境中本地安裝所需的任何模塊。 您可以根據需要指定安裝模塊的特定版本,也可以僅安裝最新版本。 瓶或Apache的,你安裝的版本取決於指定安裝時什么。

最后,命令python --version將告訴您此Python 2副本的版本python3 --version將對Python 3執行相同的操作。每當您使用此Python本地副本執行腳本時,它將使用此Python。版。

要從腳本中獲取Python版本:

from sys import version_info   
print version_info

輸出(取決於您的版本,但是看起來像這樣):

sys.version_info(major=2, minor=7, micro=13, releaselevel='final', serial=0)

我發現最好和最優雅的方法是簡單地指定位於環境本身內的 python 解釋器。 只需使用以下命令啟動您的 wsgi 文件:

#!/path/to/your/venv/bin/python

等等。

我寫了一篇關於這個主題的博客文章,希望它能有所幫助。 最重要的是,與mod_wsgi關聯的python版本需要匹配pip虛擬環境中使用的python版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM