2014-09-17 21 views
7

Tôi đang sử dụng sau requirements.txt cho pip:Cài đặt pyOpenSSL, mật mã trên Heroku

Django==1.4.3 
Pillow==2.4.0 
South==0.7.5 
amqp==1.4.5 
anyjson==0.3.3 
argparse==1.2.1 
billiard==3.3.0.18 
boto==2.4.1 
celery==3.1.12 
cffi==0.8.6 
cryptography==0.5.4 
dj-database-url==0.2.0 
django-annoying==0.7.6 
django-appconf==0.6 
django-articles==2.4.1 
django-celery==3.1.10 
django-compressor==1.3 
django-debug-toolbar==1.2.1 
django-jsonfield==0.9.13 
django-pdb==0.4.0 
django-postmark==0.1.6 
django-s3-folder-storage==0.2 
django-storages==1.1.4 
docopt==0.6.1 
facebook-sdk==0.4.0 
google-api-python-client==1.2 
gunicorn==0.15.0 
httplib2==0.9 
ipython==2.1.0 
itsdangerous==0.24 
kombu==3.0.20 
mailchimp==2.0.8 
path-and-address==0.2.0 
psycopg2==2.4.5 
pyOpenSSL==0.14 
pycparser==2.10 
pyparsing==2.0.2 
python-dateutil==2.2 
pytz==2013b 
requests==2.3.0 
six==1.8.0 
sqlparse==0.1.11 
tweepy==2.3.0 
wsgiref==0.1.2 

Mọi thứ đang làm việc cho đến khi tôi thêm

cffi==0.8.6 
cryptography==0.5.4 
google-api-python-client==1.2 
httplib2==0.9 
pyOpenSSL==0.14 
pycparser==2.10 
pyparsing==2.0.2 

mà tôi thêm vào để sử dụng google lịch API từ SignedJwtAssertionCredentials tùy thuộc vào pyOpenSSL.

Bây giờ khi tôi đẩy để Heroku tôi nhấn lỗi trong quá trình xây dựng dường như có liên quan đến sixcffi hoặc cyrptography:

Các đầy đủ build log là here, nhưng một số đoạn có liên quan:

Fetching repository, done. 

-----> Python app detected 
-----> Noticed cffi. Bootstrapping libffi. 
-----> Installing dependencies with pip 

building '_Cryptography_cffi_684bb40axf342507b' extension 

     creating /tmp/pip_build_u50597/cryptography/cryptography/hazmat/primitives/__pycache__/cryptography 

     creating /tmp/pip_build_u50597/cryptography/cryptography/hazmat/primitives/__pycache__/cryptography/hazmat 

     creating /tmp/pip_build_u50597/cryptography/cryptography/hazmat/primitives/__pycache__/cryptography/hazmat/primitives 

     creating /tmp/pip_build_u50597/cryptography/cryptography/hazmat/primitives/__pycache__/cryptography/hazmat/primitives/__pycache__ 

     gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/app/.heroku/python/include/python2.7 -c cryptography/hazmat/primitives/__pycache__/_Cryptography_cffi_684bb40axf342507b.c -o /tmp/pip_build_u50597/cryptography/cryptography/hazmat/primitives/__pycache__/cryptography/hazmat/primitives/__pycache__/_Cryptography_cffi_684bb40axf342507b.o 

     gcc -pthread -shared /tmp/pip_build_u50597/cryptography/cryptography/hazmat/primitives/__pycache__/cryptography/hazmat/primitives/__pycache__/_Cryptography_cffi_684bb40axf342507b.o -L/app/.heroku/python/lib -lpython2.7 -o /tmp/pip_build_u50597/cryptography/cryptography/hazmat/primitives/__pycache__/_Cryptography_cffi_684bb40axf342507b.so 

     Traceback (most recent call last): 

     File "<string>", line 17, in <module> 

     File "/tmp/pip_build_u50597/cryptography/setup.py", line 174, in <module> 

      "test": PyTest, 

     File "/app/.heroku/python/lib/python2.7/distutils/core.py", line 151, in setup 

      dist.run_commands() 

     File "/app/.heroku/python/lib/python2.7/distutils/dist.py", line 953, in run_commands 

      self.run_command(cmd) 

     File "/app/.heroku/python/lib/python2.7/distutils/dist.py", line 972, in run_command 

      cmd_obj.run() 

     File "<string>", line 15, in replacement_run 

     File "build/bdist.linux-x86_64/egg/setuptools/command/egg_info.py", line 186, in find_sources 

     File "build/bdist.linux-x86_64/egg/setuptools/command/egg_info.py", line 246, in run 

     File "build/bdist.linux-x86_64/egg/setuptools/command/egg_info.py", line 282, in add_defaults 

     File "build/bdist.linux-x86_64/egg/setuptools/command/sdist.py", line 167, in add_defaults 

     File "/app/.heroku/python/lib/python2.7/distutils/cmd.py", line 312, in get_finalized_command 

      cmd_obj.ensure_finalized() 

     File "/app/.heroku/python/lib/python2.7/distutils/cmd.py", line 109, in ensure_finalized 

      self.finalize_options() 

     File "build/bdist.linux-x86_64/egg/setuptools/command/build_py.py", line 26, in finalize_options 

     File "/app/.heroku/python/lib/python2.7/distutils/command/build_py.py", line 46, in finalize_options 

      ('force', 'force')) 

     File "/app/.heroku/python/lib/python2.7/distutils/cmd.py", line 298, in set_undefined_options 

      src_cmd_obj.ensure_finalized() 

     File "/app/.heroku/python/lib/python2.7/distutils/cmd.py", line 109, in ensure_finalized 

      self.finalize_options() 

     File "/tmp/pip_build_u50597/cryptography/setup.py", line 88, in finalize_options 

      self.distribution.ext_modules = get_ext_modules() 

     File "/tmp/pip_build_u50597/cryptography/setup.py", line 65, in get_ext_modules 

      from cryptography.hazmat.primitives import constant_time, padding 

     File "cryptography/hazmat/primitives/padding.py", line 25, in <module> 

      from cryptography.hazmat.primitives import interfaces 

     File "cryptography/hazmat/primitives/interfaces.py", line 21, in <module> 

      @six.add_metaclass(abc.ABCMeta) 

     AttributeError: 'module' object has no attribute 'add_metaclass' 

Một số googling dường như để hiển thị six.add_metaclass xảy ra trong các phiên bản trước đó của sáu, nhưng phiên bản tôi đang sử dụng là gần đây nhất tôi tin, và hơn nữa điều này cũng có vẻ hoạt động cục bộ nếu tôi tạo một virtualenv mới và làm pip install -r requirements.txt (miễn là tôi đã cài đặt libffi dù sao đi kèm với sudo apt-get install libffi-dev.

Bất kỳ ai cũng biết tại sao điều này không hoạt động trên heroku và cách khắc phục?

EDIT Tôi đã kể từ khi phát hiện ra rằng điều này không xảy ra nếu tôi chỉ định phiên bản python để được chính xác rằng các máy tính cục bộ của tôi bằng cách sử dụng một runtime.txt với python-2.7.6 (vs các Heroku mặc định 2.7.7). Tôi vẫn thấy điều này hơi kỳ quặc bây giờ, nó chỉ là một lỗi?

Trả lời

0

Sự cố xảy ra với six. Tôi đã nhìn thấy vấn đề này trước khi được giải quyết bằng cách gỡ cài đặt và cài đặt six. Hãy thử lại và thử lại nếu nó hoạt động.

pip uninstall six 
pip install six 
Các vấn đề liên quan