我正在尝试更改生产服务器中的某些代码,但是当我测试新代码时,它没有被执行。我认为问题在于,当我上传更新的源文件时,它没有被编译成.pyc
文件。
-rw-r--r-- 1 ubuntu ubuntu 47872 Jul 13 04:39 admin_email.py
-rw-r--r-- 1 root root 48212 Feb 10 03:12 admin_email.pyc
从上面的时间戳可以看出,.pyc
文件尚未更新。
我是否正确地假设admin_email.py
中的更改未被应用的原因是因为它没有被编译?如果是这样,有人可以提供一个如何让它这样做的建议吗?问题可能是我需要重启服务器吗?
答案 0 :(得分:4)
重置应用程序可能会成功。因为你正在使用gunicorn / nginx我假设你也是supervisord(如果不是这样,请说明,那么我可以更新我的答案也添加)。在这种情况下,您可以sudo suporvisorctl restart <app_name>
重新启动应用程序。
可能存在的另一个问题,如brainless coder
和Marius
也说明,应用程序似乎(至少一次)以root
运行,您应该避免这种情况。您应该删除.pyc
文件并更改运行应用程序的用户。
答案 1 :(得分:2)
.pyc文件由root用户出于某种原因拥有,而不是其他用户可写的。您的Python进程可能以非root身份运行,并且无法创建新的.pyc文件。
删除旧的.pyc文件(首先进行备份),或者将它们与运行.py文件的进程一起chown到同一用户,它可能会起作用。
答案 2 :(得分:1)
如果需要,您可以将其删除,但事实并非如此。我不知道你的代码是如何执行的原因。
.pyc文件是python解释器编译源代码的字节代码,因此只要您有权访问.py文件就可以安全删除。
您是否通过shell运行脚本?在这样做之前,你是否给了文件可执行文件(+ x)权限?