Python 3.5または3.4のWindowsでライブラリを動作させるのに問題があります(この問題[1]を参照)。私はなぜそれが失敗しているのかを詳しく見ていきたいと思った。Python 3.5でbytes-likeオブジェクトとstrを理解する助けが必要です
私は問題はこのようになりますいくつかのコードつまるところ、私は理解していないその結果信じる:
import urllib.request
import sys
a = 'c:\Python35\Lib\site-packages\weasyprint\css\html5_ua.css'
b = a.encode(sys.getfilesystemencoding()) ## 'mbcs' on windows
c = urllib.request.pathname2url(b)
インタプリタでこれを実行するには与える:
はTypeError:バイト様オブジェクトは、ない 'str' はしかし
を要求され、最後の行に変更します。
c = urllib.request.pathname2url(a)
を3210
と正常に動作します。 (a)は<クラス 'str'>
私はそれがバイトのようなオブジェクトが欲しいと私に言ってきたので混乱していますが、それは<クラス 'str'>オブジェクトを渡すときだけです。うまくいけば、これは簡単に説明できるものです。コマンドライン・インタプリタ使用
スタックトレース:
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib.request
>>> import sys
>>> a = 'c:\Python35\Lib\site-packages\weasyprint\css\html5_ua.css'
>>> b = a.encode(sys.getfilesystemencoding()) ## 'mbcs' on windows
>>> c = urllib.request.pathname2url(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\nturl2path.py", line 48, in pathname2url
if not ':' in p:
TypeError: a bytes-like object is required, not 'str'
>>>
[1]
スタックトレースを含む完全なエラーメッセージを表示できますか? – user2357112