已解决:我编辑了错误的 WISGI 文件。我没有意识到有 2 个单独的 WISGI 文件。问题解决了。感谢 Forcebru 的帮助。
我写了一篇文章详细介绍了如何在 PytonAnywhere 上部署 Django的过程。希望这可以帮助一些人避免我所犯的陷阱。
我正在尝试使用 pythonanywhere.com 中的 .env 文件设置环境变量,但我不断收到错误消息,指出我的 SECRET_KEY 为空,因此未设置我的环境变量。
我正在关注 pythonanywhere.com 上的文章
链接:https://help.pythonanywhere.com/pages/environment-variables-for-web-apps/
import os
from dotenv import load_dotenv
project_folder = os.path.expanduser('~/my-project-dir') # adjust as appropriate
load_dotenv(os.path.join(project_folder, '.env'))
Run Code Online (Sandbox Code Playgroud)
我不太明白第三行。在终端中,我 cd 进入项目文件夹并运行 pwd 命令来获取路径。我不确定我应该为 的论证包含哪一部分os.path.expanduser('~/my-project-dir')。
按照本文中的 bash 控制台部分,我在访问环境变量时没有遇到任何问题。所以我认为我正在使用正确的工作项目目录。我能够向控制台发出回声。
这是我的 WISGI 文件:
import os
from dotenv import load_dotenv
from django.core.wsgi import get_wsgi_application
project_folder = os.path.expanduser('~/bogalusa-church')
load_dotenv(os.path.join(project_folder, '.env'))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bogalusa_church.settings')
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
我用于设置 bash 终端变量的工作目录与我在这里使用的目录相同。
任何见解都将受到高度赞赏。感谢您提前提供的任何帮助。
我是Pythonanywhere的新手,我无法弄清楚为什么静态文件没有加载...这是我存储css和图像的路径,即static/images/wikiLang.png等等
/static/admin/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media
/static/ /home/saadfast/WikiWorld/static
/media/ /home/saadfast/WikiWorld/media
Run Code Online (Sandbox Code Playgroud)
在客户端,我应该如何使用URL?
我做了什么search.html:
<div id="TopheaderImg">
<img src="/home/saadfast/WikiWorld/static/images/wikiLogo.png" width="100px" style="float:middle"/>
<br />
<img src="/home/saadfast/WikiWorld/images/wikipediaLang.png" width="100px" style="float:middle"/>
</div>
Run Code Online (Sandbox Code Playgroud)
为什么图像没有加载?路径或URL应该是什么?
我尝试使用www.pythonanywhere.com来构建Web应用程序,现在我已经创建了一个目录"/ > home > myid_xxx > mysite > FM",并且在'FM'目录下有两个文件:demo1.py和demo_pickle_file.pkl.
我尝试cPickle.load(open('demo_pickle_file.pkl','rb'))在'demo1.py',但pythonanywhere控制台显示:
IOError: [Errno 2] No such file or directory: 'demo_pickle_file.pkl'
Run Code Online (Sandbox Code Playgroud)
那么,如何正确访问pickle文件?
我知道有类似这样的帖子.我已经回顾了它,它与我在Pythonanywhere.com上遇到的情况完全不同
我正在尝试将我通过tangowithdjango.com完成的rango教程项目部署到Pythonanywhere.com上.当我尝试打开网站(url是ragzputin.pythonanywhere.com)时,我得到这个页面:
这是我的项目的urls.py文件:
from django.conf.urls.defaults import *
from django.conf import settings
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^rango/', include('rango.urls')),
url(r'^admin/', include(admin.site.urls)),
)
if settings.DEBUG:
urlpatterns += patterns(
'django.views.static',
(r'media/(?P<path>.*)',
'serve',
{'document_root': settings.MEDIA_ROOT}), )
Run Code Online (Sandbox Code Playgroud)
如果你们需要一些额外的信息,这里是我的应用程序urls.py(应用程序名称是rango):
from django.conf.urls import patterns, url
from rango import views
urlpatterns = patterns('',
url(r'^$', views.index, name="index"),
url(r'^about/$', views.about, name="about"),
url(r'^add_category/$', views.add_category, name="add_category"),
url(r'^category/(?P<category_name_url>\w+)/add_page/$', views.add_page, name="add_page"),
url(r'^category/(?P<category_name_url>\w+)/$', views.category, name="category"),
url(r'^register/$', views.register, name="register"),
url(r'^login/$', views.user_login, …Run Code Online (Sandbox Code Playgroud) Django 教程使用 Installed_apps 中的列表进行了以下说明。但默认值是元组,其他消息来源也表示在这种情况下 Django 更喜欢元组而不是列表。
我的问题是:如果我按照教程所说的操作,并使用列表而不是元组,这会在设置的其他地方导致问题吗?或者这并不重要?
我在运行 Django 1.8 和 Python 3.4 的 PythonAnywhere 上使用 virtualenv
教程所说的添加到 mysite/settings.py 的内容:
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Run Code Online (Sandbox Code Playgroud) 我在https://www.pythonanywhere.com上使用flask和sqlite3 .在我自己的机器中,当我测试应用程序时,我不需要指定数据库的目录,例如db = sqlite3.connect("database.db")它完美地工作.在pythonanywhere上,我需要将其更改为,db = sqlite3.connect("/path/to/database.db")因为当我不更改时,我将收到此错误:
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
Run Code Online (Sandbox Code Playgroud)
在/var/log/<application>.pythonanywhere.com.error.log,我得到:
OperationalError: no such table: <table-name>
Run Code Online (Sandbox Code Playgroud)
我database.db在pythonanywhere的主文件夹中找到一个空(这意味着应用程序创建它,对吧?)database.db我创建的是在projects文件夹中
有没有办法指定目录,以便它在我的机器和pythonanywhere上完美地工作而不改变路径?
在成功完成了pythonanywhere flask教程(pa.com)之后,Miguel Grinberg的" Flask Mega Tutorial "(fmt)招手了.可悲的是,我甚至没有把它变成"Hello,World".这就是我所做的:
在pa.com尝试按照fmt逐字逐句是不行的:
python3 -m venv flask
Run Code Online (Sandbox Code Playgroud)
导致错误
ensurepip is not available
Run Code Online (Sandbox Code Playgroud)
我们没有sudo访问权限.
没有被吓倒,我推断所有Miguel要求我们做的是将我们在pa.com教程(flask_app.py)中的一个文件中看到的功能分发到几个文件中,这将使得构建完整的应用程序变得更容易.由于pa.com已经使用flask和python 3.4设置了我的基本Web应用程序,因此无法设置虚拟环境.似乎并不是一块,至少一开始并不是.
根据fmt,在pa.com的基础目录(pwd - > home/{username} /微博) - 这是flask_app.py成功生成pa.com教程页面的文件所在的位置- 我设置app和tmp目录,创造app/__init__.py,app/views.py以及run.py文件的指导下FMT
点击app页面(run.py是主目录中唯一的文件)会在页面上生成Unhandled Exception.
将名称更改为flask_app.py(这似乎是pa.com对烧瓶安装的期望)会生成相同的错误.
将flask_app.py代码的内容修改为:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "working from flask_app.py"
Run Code Online (Sandbox Code Playgroud)
从应用程序生成成功的输出,而在名为run.py的文件中具有相同的代码会生成相同的Unhandled Exception错误.
线条:
from app import app在这两个run.py和views.py并
from app import views在__init__.py
所有这些让我想知道......这个"app"模块来自哪里?但除了被这个问题困惑之外,没有其他关于如何从这里开始的想法.有什么建议?真的想在pa.com上设置并完成本教程/书.
感觉我错过了一些基本的东西,但不确定是什么.
问题是关于使用 pyTelegramBotAPI 模块在 Telegram 机器人中使用 webhook。我正在使用 pythonanywhere.com 来托管机器人。
下面的代码工作正常:
from flask import Flask, request
import telebot
secret = "A_SECRET_NUMBER"
bot = telebot.TeleBot ('YOUR_AUTHORIZATION_TOKEN')
bot.set_webhook("https://YOUR_PYTHONANYWHERE_USERNAME.pythonanywhere.c..
}".format(secret), max_connections=1)
app = Flask(__name__)
@app.route('/{}'.format(secret), methods=["POST"])
def telegram_webhook():
update = request.get_json()
if "message" in update:
text = update["message"]["text"]
chat_id = update["message"]["chat"]["id"]
bot.sendMessage(chat_id, "From the web: you said '{}'".format(text))
return "OK"
Run Code Online (Sandbox Code Playgroud)
但是,当我使用示例中所示的消息处理程序时,我没有收到机器人的答复:
# Process webhook calls
@app.route(WEBHOOK_URL_PATH, methods=['POST'])
def webhook():
if flask.request.headers.get('content-type') == 'application/json':
json_string = flask.request.get_data().decode('utf-8')
update = telebot.types.Update.de_json(json_string)
bot.process_new_updates([update])
return ''
else:
flask.abort(403) …Run Code Online (Sandbox Code Playgroud) flask pythonanywhere telegram telegram-bot py-telegram-bot-api
我正在尝试“利用浏览器缓存”来提高网站速度。webapp 托管在 pythonanywhere 上,我想我需要配置 nginx.conf 文件以包含:
location ~* \.(css|js|gif|jpe?g|png)$ {
expires 168h;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
Run Code Online (Sandbox Code Playgroud)
(从这里开始:如何在 django 中利用浏览器缓存)
但是我在任何地方都找不到 conf 文件。它不在 /etc/nginx、/usr/local/etc /usr/etc ...
这可以在 pythonanywhere 上完成吗?