|
|
1
2
经过更彻底的分析,我想我明白这里发生了什么。 当python启动时,它会设置sys.path(这都是初始化解释器的一部分)。 此时,环境用于确定在何处查找.pth文件。如果此时没有定义pythonpath,那么它将找不到安装到sys.prefix的模块。此外,由于easy-install.pth可能安装到自定义前缀目录中,因此它找不到要分析的.pth文件。 在解释器初始化后向os.environ或sys.path添加环境变量不会导致再次分析.pth文件。这就是为什么您发现自己被迫手动执行希望Python自然执行的操作。 我认为正确的解决方案是确保自定义路径在解释器启动时(在mysite.fcgi执行之前)对python解释器可用。 我寻找将pythonpath环境变量添加到mod fastcgi的选项,但没有看到这样的选项。也许这是一个通用的Apache选项,所以没有在mod\fastcgi中记录,或者可能无法在mod\fastcgi配置中设置静态变量。 考虑到这一点,我相信您可以使用以下方法来解决问题:
虽然我没有一个好的环境来测试,但我认为包装外壳脚本应该是这样的:
可能需要考虑其他解决办法。
|
|
2
0
由Web服务器运行的程序或在Web服务器上运行的代码与交互使用的程序相比,具有受限制的环境。最有可能的是,这种差异源于交互环境和FastCGI环境之间的差异。我不能告诉你的是,在这种情况下,哪种差异是至关重要的。 |
|
|
3
0
在IIS(Windows)下运行Python应用程序时,我遇到了类似的问题。我发现在isapi下运行时,鸡蛋是不可读的,因为安装工具会忽略压缩鸡蛋的权限,并且isapi应用程序在有限的权限帐户下运行。 您可能在FastCGI中遇到同样的情况。如果fastcgi进程没有必要读取鸡蛋或扩展鸡蛋的权限,您可能会遇到问题。此外,我还发现,对于某些鸡蛋(尤其是具有二进制/扩展模块或必须作为文件访问的资源的鸡蛋),将python_egg_cache环境变量设置为进程可写的目录也是必要的。 |
|
|
4
0
我同意,即使定义了pythonpath环境变量,当python在fastcgi环境中启动时,也不会解释.pth文件。我现在不知道为什么会这样,但我确实有一个解决方法的建议。 使用site.addsitedir。它将解释.pth文件,这样您就可以简单地按名称导入鸡蛋,而不必为每个鸡蛋添加完整的路径。
不需要使用虚拟环境。在我的共享主机提供商,我只需在~/.本地使用
下面是flup“hello world”示例的一个变体,用于转储环境变量、路径和模块,对于调试fastcgi很有用。
|
|
|
c3ntry · apache-500内部服务器错误(脚本头过早结束) 8 年前 |
|
|
Aiden · NGINX-未指定输入文件 8 年前 |
|
|
JC203 · 在IIS8上安装Django 1.9 9 年前 |
|
|
qwerry · Fastcgi包装器无法使用根权限 11 年前 |
|
|
Matteo Codogno · 使用APC和MAMP 11 年前 |
|
|
Jeroen · 服务器正在发送格式错误的FCGI标头 12 年前 |
|
|
jett · 如何配置nginx和fcgi以根据请求uri调用单独的可执行文件 12 年前 |