我正在使用Heroku尝试部署我的应用程序。连接到我的Github存储库后,在“手动部署”下,我点击了“部署分支”。
Github代码库包含requirements.txt,其中包含
numpy
pandas
matplotlib
pickle
gunicorn
flaskHeroku上的错误说
Collecting pickle (from -r /tmp/build_0f73c7cf93d0cf7e0d53415c51d2e21f/requirements.txt (line 4))
Could not find a version that satisfies the requirement pickle (from -r /tmp/build_0f73c7cf93d0cf7e0d53415c51d2e21f/requirements.txt (line 4)) (from versions: )
No matching distribution found for pickle (from -r /tmp/build_0f73c7cf93d0cf7e0d53415c51d2e21f/requirements.txt (line 4))
! Push rejected, failed to compile Python app.
! Push failed然而,我的Ubuntu机器上似乎安装了pickle。当我在终端上输入python,然后输入import pickle时,我没有看到任何错误
还有,当我试着
filename = 'outfile.pickle'
outfile = open(filename,'wb')
pickle.dump(dataframe,outfile)
outfile.close()我在我的目录中看到了pickle文件
为什么我在Heroku中得到这个错误?
发布于 2019-04-26 08:35:50
直接的问题是pickle is a module in Python's standard library。不需要安装它(因此也不需要将其包含在requirements.txt文件中)。
通常,从生产中使用的同一依赖项文件在本地安装依赖项是一个好主意。这将揭示这样的问题,其中您有一个不应该在那里的条目。
然而,您可能不应该在Heroku上运行此代码,即使您可以构建它。Heroku的文件系统is ephemeral。您保存的文件将在下次重新启动dyno时丢失。这种情况经常发生(at least once per day)。
您可以将数据保存在客户机-服务器数据库(如Heroku's Postgres service )中,或者如果您确实需要保存文件Heroku recommends using something like Amazon S3。
https://stackoverflow.com/questions/55859065
复制相似问题