Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以运行金字塔应用程序而不将其作为鸡蛋安装?_Python_Web Applications_Pyramid - Fatal编程技术网

Python 是否可以运行金字塔应用程序而不将其作为鸡蛋安装?

Python 是否可以运行金字塔应用程序而不将其作为鸡蛋安装?,python,web-applications,pyramid,Python,Web Applications,Pyramid,我正在使用Pyramid web框架构建一个应用程序,在所有文档中,它都假定您将使用setup.py以鸡蛋的形式安装应用程序。虽然这对于一个可分发的包是有意义的,但它为一个不打算作为库或扩展共享的应用程序增加了大量开销和不必要的打包代码 Pyramid使用PasteDeploy读取应用程序配置文件(.ini),并需要一个部分来定义要运行的应用程序: [app:blog] use = egg:MyBlog#main database = mysql://localhost/blogdb blogn

我正在使用Pyramid web框架构建一个应用程序,在所有文档中,它都假定您将使用
setup.py
以鸡蛋的形式安装应用程序。虽然这对于一个可分发的包是有意义的,但它为一个不打算作为库或扩展共享的应用程序增加了大量开销和不必要的打包代码

Pyramid使用
PasteDeploy
读取应用程序配置文件(
.ini
),并需要一个部分来定义要运行的应用程序:

[app:blog]
use = egg:MyBlog#main
database = mysql://localhost/blogdb
blogname = This Is My Blog!
这告诉应用程序加载程序导入一个名为
MyBlog
的库,该库位于
PYTHONPATH
上,并使用一个名为
main
的入口点,该入口点已在
setup.py
配置中定义

有没有办法通过路径直接引用应用程序并指定WSGI入口点(类似于通过以下方式直接运行应用程序):

cd/path/to/MyBlog
gunicorn--绑定等…应用程序:main
还有一个以
call:
开头的附加语法,允许您指定未在
setuptools
中注册的入口点:

[app:mythirdapp]
use = call:my.project:myapplication

但是,加载程序似乎仍然希望在python路径上安装一个包,而不是一个简单的python包/可执行文件。

我实际上认为
调用:
方法能够找到一个未使用
setuptools
安装的包。这是因为python路径在当前directo中启动因此,如果您从包含应用程序的目录启动应用程序,那么一切都应该按预期工作

使用
[composite:
指令编写应用程序时会出现问题。如果
[app:]
部分可以包括一个
目录=…
参数,该参数将把该目录添加到python路径中,但我想这更像是一个需要与
PasteDeploy
开发人员一起提出的功能请求

是否可以运行金字塔应用程序而不将其作为鸡蛋安装

是的,您可以在网站上找到许多示例。您不必使用ini样式声明来运行WSGI应用程序。例如,您可以创建
myapp\u WSGI.py
文件:

from pyramid.paster import get_app, setup_logging
ini_path = 'production.ini'
setup_logging(ini_path)
application = get_app(ini_path, 'main')
并将其传递给
gunicorn

gunicorn myapp_wsgi:application

您可以在和页面上找到更多信息。

调用:
协议内部使用
\uuuu导入
函数,因此是的,您的项目必须位于
PYTHONPATH
中,作为解决方法,您可以使用env,如:
env PYTHONPATH='/tmp/test'pserve app.ini或在用户站点文件夹中创建
.pth`文件(
python-msite——用户站点
)“这肯定是我在生产中会做的,但对于开发来说,它有助于使用
pserve
及其查看文件和重新加载的能力。因为你提到了
pserve
,所以我就把它扔掉了,它基本上是pserve所有功能的95%替代品,但可以与任何wsgi应用程序一起使用。