質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

2回答

1521閲覧

herokuのデプロイエラー ( freeze のエラー )

TM_raspberry

総合スコア1

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2021/11/15 13:16

編集2021/11/15 15:09

前提・実現したいこと

ラズパイ3B+で、raspberrypiOSを使用して勉強中の初心者です。

LINEとSlackを連携させる (2.LINE→Slackの連携編)

この記事を参考に、pythonとherokuを使ってLINEの投稿をslackに送りたいと考えています。

参考記事のPythonは3.7.8ですが、herokuデプロイの際に、そのバージョンに対応していないというエラーが出たので、pyenvをインストールしてv3.9.8を入れています。

$ which pyenv
/home/ユーザーネーム/.pyenv/bin/pyenv

$ which python
/home/ユーザーネーム/.pyenv/shims/python

$ which pip
/home/ユーザーネーム/.pyenv/shims/pip

$ python -V
Python 3.9.8

となり、PATHは通っていると思われます。

herokuのインストールは以下を参考にしました。
Raspberry Pi】Heroku CLIのインストールからアプリのデプロイまで

また、heroku-18から20にアップグレードしました。

発生している問題・エラーメッセージ

参考HPのとおりに全て用意してherokuにデプロイする際に、
$ git push heroku master
をすると、require.txtに記載しているfreezeのところでエラーが出てしまいます。

remote: Compressing source files... done. remote: Building source: remote: remote: -----> Building on the Heroku-20 stack remote: -----> Using buildpack: heroku/python remote: -----> Python app detected remote: -----> Using Python version specified in runtime.txt remote: -----> Requirements file has been changed, clearing cached dependencies remote: -----> Installing python-3.9.8 remote: -----> Installing pip 21.3.1, setuptools 57.5.0 and wheel 0.37.0 remote: -----> Installing SQLite3 remote: -----> Installing requirements with pip remote: Collecting Flask remote: Downloading Flask-2.0.2-py3-none-any.whl (95 kB) remote: Collecting line-bot-sdk remote: Downloading line_bot_sdk-2.0.1-py2.py3-none-any.whl (83 kB) remote: ERROR: Could not find a version that satisfies the requirement freeze (from versions: none) remote: ERROR: No matching distribution found for freeze remote: ! Push rejected, failed to compile Python app. remote: remote: ! Push failed

require.txt

Flask line-bot-sdk freeze slackweb

runtime.txt

python-3.9.8

試したこと

$ pip install <freezeなどのコマンド>
のエラーの原因 を調べたところ、原因の一つはopenSSLの未インストールがあるようで、

$ sudo apt install libssl-dev
をして、

libssl-dev はすでに最新バージョン (1.1.1d-0+deb10u7) です。
と出てから、pyenvでPython3.9.8をインストールし直して、

$ pip3 install freeze

を実行したのですが、

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple ERROR: Could not find a version that satisfies the requirement freeze (from versions: none) ERROR: No matching distribution found for freeze

が出てしまいます。
sudoをつけたりpip3で実行しても同様です。

もしかして、httpsに対応する設定をしないといけないでしょうか...?
参考→RaspberryPiでApache2をHTTPSに対応させたい!

freeze自体のインストールは現在機能しないのでしょうか?

※pyenvのパスがあるディレクトリ付近にfreeze.shは存在していました。

なにか初歩的な見落としなどがあるのかもしれませんが、
知恵をお貸しいただけると助かります。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

freezeというパッケージを依存関係として設定しているようですが、PyPIにもpiwheelsにもfreezeという名称のパッケージは存在しません。

※いずれも404 Not Found

この状況下だと、可能性としては次のケースが考えられます。

freezeという名のパッケージは必要ないのに、何故か指定している

※個人的にはこちらだと思っています

記事経由でGitHubのリポジトリを見る限りfreezeなどというパッケージを使っている様子がありません。
そのため、元記事含めてなにかの勘違いをしていて、freezeという指定する必要のないパッケージを指定しているように思えます。

この場合は、requirements.txtからfreezeの行を消すだけで終わりです。

パッケージの本来の名称がfreezeではない

デプロイしようとしているアプリケーションの機能にfreezeという名称の何かを使っていたとした場合でも、実際のパッケージ名としては全く別のものである可能性があります。

例えば、PyPI上でのパッケージだと単純にfreezeで検索するだけでもこれだけありますがpiwheels含めて、これらの内のどれかと誤認している可能性があります。

この場合だと、パッケージをしらみつぶしにして探すか、ローカルの環境からインストール済みのパッケージから特定する必要があります。

投稿2021/11/15 15:39

attakei

総合スコア2738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TM_raspberry

2021/11/15 15:55 編集

ご丁寧な回答ありがとうございます。 同様なことをしようとしている他の記事にもfreezeが出てきているものがあったので必要なのかもしれないと思い込んでいたのですが、明日以降、まずfreezeの記載を削除してからトライしてみます。
TM_raspberry

2021/11/18 09:38

freezeを削除したらデプロイを完了することができ、その後試行錯誤した末に無事動作するようになりました。 この度は誠にありがとうございました。
guest

0

requests.txtからfreezeを削除したらデプロイできました。

また、その後、
$ heroku run python main.py

を実行してからは、pythonのcollectionの中の「MutableMappingがない」というエラーが出ました。

調べたところ、heroku対応のpythonの中ではv3.8.12には存在するようだったので、runtime.txtを編集してデプロイし直したところ、無事動くようになりました。

また、細かい部分では、参考URLの記事のmain.py内にLINEの署名の検証に使う「X-Line-Signature」の記述がありますが、「X-line-signature」に変更しました。
Messaging APIリファレンス|webhook-リクエストヘッダー

ありがとうございました。

投稿2021/11/18 09:45

編集2021/11/18 15:11
TM_raspberry

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問