2016-04-11 11 views
0

djangoプロジェクトをPython 2.7からPython 3.4に切り替えると、以下のコードでエラーが発生します。 Python 2.7ではすべて正常に動作します。django sendfile with python 3.x vs 2.7

from sendfile import sendfile 
return sendfile(request, myfile, attachment=True, attachment_filename=filename) 

私は上記のコードを実行しようとするとエラーが発生します。

return sendfile(request, myfile, attachment=True, attachment_filename=filename) 
TypeError: function takes exactly 4 arguments (2 given) 

私はいくつかのpython 3.4ドキュメントを読んで、別のオプションも試してみました。

は1をお試しください:

 return sendfile(*(request, myfile), **{'attachment':True, 'attachment_filename':filename}) 
    TypeError: function takes exactly 4 arguments (2 given) 

return sendfile(*(request, myfile), **{'attachment':True, 'attachment_filename':filename} 

は2を試してみてください。

return sendfile(request, myfile, True, filename) 
TypeError: an integer is required (got type WSGIRequest) 

私は3.4をPythonとの両方をジャンゴに新しいです。上記の何が間違っているか教えてください。

+1

sendfileのパッケージがインストールされていますか? PythonまたはDjangoのですか? – karthikr

+0

また、なぜ 'foo、bar、baz = mumble'の代わりに' foo、bar'と '** {foo:bar、baz:mumble}'の代わりに '*(foo、bar)'を使用していますか? – ppperry

+0

@ Karthik-私はdjango sendfileを使用しています。私は "sendfile import sendfile"のようにインポートしました。私は何か間違っているのですか?私はhttps://pypi.python.org/pypi/django-sendfileに従っています。 が動作しています。 – virus

答えて

0

django-sendfileパッケージの代わりにpysendfileパッケージをインストールした場合、このエラーが発生することがあります。

  1. 仮想環境があれば入力してください。パッケージがインストールされているかを確認するには
  2. ルック:pip freeze
  3. pysendfile場合がインストールされているとdjango-sendfileがインストールされていないが、実行します。pip uninstall pysendfilepip install django-sendfile