Unicode解码错误:"utf-8"编解码器无法解码位置0中的字节0xff:部署到Heroku时起始字节无效

7gs2gvoe  于 2022-12-23  发布在  其他
关注(0)|答案(3)|浏览(161)

我尝试遵循这个教程:http://tutorial.djangogirls.org/en/index.html
我已经准备好了:http://tutorial.djangogirls.org/en/deploy/README.html
我想通过git把它推到heroku上,我熟悉git,但不熟悉heroku,虽然我知道python,但我是一个django初学者。
当我执行命令git push heroku master时,我得到了这个输出,它阻止了应用程序的部署。
下面是我收到的错误:

(myvenv) $> git push heroku master
Counting objects: 19, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (19/19), 3.81 KiB | 0 bytes/s, done.
Total 19 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing runtime (python-3.4.1)
remote: -----> Installing dependencies with pip
remote:        Exception:
remote:        Traceback (most recent call last):
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/pip-      6.0.6-py3.4.egg/pip/basecommand.py", lin
, in main
remote:            status = self.run(options, args)
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/pip-    6.0.6-py3.4.egg/pip/commands/install.py"
e 321, in run
remote:            finder=finder, options=options, session=session):
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/pip-6.0.6-py3.4.egg/pip/req/req_file.py", li
, in parse_requirements
remote:            session=session,
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/pip-  6.0.6-py3.4.egg/pip/download.py", line 4
n get_file_content
remote:            content = f.read()
remote:          File "/app/.heroku/python/lib/python3.4/codecs.py", line   313, in decode
remote:            (result, consumed) = self._buffer_decode(data, self.errors, final)
remote:        UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in      position 0: invalid start byte
remote:
remote:
remote:  !     Push rejected, failed to compile Python app
remote:
remote: Verifying deploy...
remote:
remote: !       Push rejected to chsdjangoblog.
remote:
To https://git.heroku.com/chsdjangoblog.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/chsdjangoblog.git'

有人知道为什么会这样吗?heroku看起来很好用,有没有更好的替代品/heroku的最佳用例是什么?我真的只是想解决这个问题,这样我就可以继续教程了。学习django一直是我的目标,因为我厌倦了Word Press和PHP开发,并且已经是一个很长时间的Python爱好者。
在该错误之后,当我尝试下一步时:heroku ps:scale web=1我得到以下输出:

Scaling dynos... failed
! App mus tbe deployed before dynos can be scaled.

先谢了。
编辑:
下面是我的要求. txt:

Django==1.8
dj-database-url==0.3.0
gunicorn==19.3.0
heroku==0.1.4
python-dateutil==1.5
requests==2.6.0
whitenoise==1.0.6
psycopg2==2.5.4`

我试过保存为UTF-8,ANSI,UTF-16。所有的都是相同的消息。我甚至没有复制粘贴就重写了它。为什么我的第一个字节总是0xff而不管编码?heroku期望什么?有方法/工具来检查txt文件中的字节吗?

mitkmikd

mitkmikd1#

对于这个问题的其他参与者来说,您的requirements.txt文件似乎是以UTF-16小端编码的。
0xFF是UTF-16-LE的字节顺序标记的第一个字符,第二个字符是0xFE。追溯指出第一个字符是位置0中的0xFF,在Windows中,文件通常存储为UTF-16格式并带有BOM。
尝试将requirements.txt文件保存为UTF-8 * 格式(不带 * BOM),或者保存为ASCII格式。

    • 编辑**

无法在记事本中工作,因此请改用Python 3:

with open('requirements.txt', encoding='utf-16') as old, open('requirements_new.txt', 'w', encoding='utf-8') as new:
    new.write(old.read())

requirements_new.txt现在将被编码为UTF-8,应该可以工作(它可能最终会成为ASCII)。
请注意,这是基于其他人的评论和回答,他们认为有问题的文件是requirements.txt

qzlgjiam

qzlgjiam2#

请看这个答案:Deploying Django/Python 3.4 to Heroku
pip崩溃,因为您的requirements.txt文件编码错误。请以UTF-8 ANSI编码保存该文件。

gc0ot86w

gc0ot86w3#

我修复了它,这个问题似乎只发生在requirements.txt是在windows上生成的,不管我选择了什么编码。我在Linux上用ASCII生成了这个文件,它工作了。然后我把这个文件转移到windows上,它也工作了。因此问题一定是requirements.txt编码,就像在注解中提到的那样。然而,正确的编码似乎是ASCII。

相关问题