我是金字塔的初学者。
我想将Pyramid部署到我的生产服务器。 我有一个使用Capistrano的部署脚本来执行此操作。
set :pid_path, "/var/lib/#{application}"
set :log_path, "/var/log/#{application}"
namespace :deploy do
task :restart, :roles => :app do
end
task :finalize_update, :roles => :app do
run "cd #{release_path} && python setup.py build"
%w[ 5000 5001 ].each do |port|
run "if [ -f #{pid_path}/#{port}.pid ]; then paster serve --stop-daemon --pid-file=#{pid_path}/#{port}.pid; fi"
run "paster serve --daemon --pid-file=#{pid_path}/#{port}.pid --log-file=#{log_path}/paster.log #{release_path}/production.ini http_port=#{port}"
end
end
end
但如果没有安装输入'sudo python setup.py install',它就无法正常工作。 如果我编写代码来执行此操作,它可能会起作用但我不想因为权限而这样做。
有人有任何建议吗?
答案 0 :(得分:5)
好的,最好的办法是设置virtualenv
,激活它,然后在virtualenv
中安装应用程序并从那里运行: - )
除此之外,还有使用setuptools / distutils安装到本地用户文件夹的选项,方法是使用easy_install的--user
参数,如下所示:http://docs.python.org/install/index.html
但严重的是,使用virtualenv: - )
答案 1 :(得分:4)
将应用程序安装到virtualenv中或使用python setup.py develop
将项目链接到python环境(virtualenv或系统,具体取决于你调用的python)。这通常比python setup.py install
更可取,因为它可以将您的源保存在可管理的位置,并且不需要您担心清单文件以确保您的静态资源位于已安装的软件包中。