• 締切済み

Pythonのライブラリとかのバージョンについて

Pythonは本体、numpy, scipy, pandas, StatModels, Matplolib, Seaborn, Scikit-learn, tensolflowなどのライブラリ、pipなどのコマンドまで含めてバージョンがいろいろあると思います(pipを使って何かインストールしたらそれは古いと指摘される)。そこで動作が思わしくないとき、バージョンの齟齬があるものでしょうか。本体は2.7,3.x間で大きな違いがあるのは周知のことですが。本やネット情報って本体・ライブラリの最新バージョンと比べてやや遅れていることが多いのでコピペとかしても動作しないみたいなのでお尋ねしました。どうでしょうか。具体的な問題は別にあるのですが、概ねどうなのかなと思いますが。  また、コードの動作とは関係ないコメントについても漢字コードがチェックされるのでしょうか。コメントの漢字コードが指定されていないというメッセージで動作が止まるようです。よろしくお願いします。

  • Python
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

バージョンによって動く動かないというのはどうしても発生するので、ライブラリであればバージョンを揃えることが基本になります。最近ではpipenvでライブラリの環境を切り替える方法が使われることが多いかもしれません。 本体のバージョンも影響することがあるので、linuxなどではpyenvで複数のpythonバージョンを実行できるようにすることが多いと思います。 自分が書いたコードと、参考にしたいコードで、ライブラリのバージョンが違うために動作しない場合は、ライブラリを新しいほうに合わせて、動かない部分を修正するしかないと思います。 文字コードについては、ソースの先頭(1行目か2行目)に # -*- coding: utf-8 -*- といった形で指定することができますが、utf-8以外は使ったことがないので、他の文字コードで問題が出ないかどうかはわかりません。

noname#236874
noname#236874
回答No.1

私もPythonはそこまで詳しくはないのですが。 Pythonには、ヴァージョンの違いを吸収する仕組みがあるのですが、なんか、感じとして、使いづらいか、うまく動いていないような気もします。 https://gammasoft.jp/python/python-version-management/ 漢字コードの部分は、わかりません。 検索しても出てこないので、生のエラーを書いていただければ、より回答がつくかもしれませんよ。

skmsk1941093
質問者

お礼

回答ありがとうございます。pythonを実行する方法として、プロンプト上でソースが書いてあるファイルを走らせる場合や、1行1行投入しながら実行する方法、さらにJupyterのようにブラウザをベースにして実行する方法もあるようで、その辺もバラエティがあり、実行環境の統一とか前提が難しいように思っています。 漢字コードの方はコメントでさえもutf-8でないと動かないことが分かりました。

関連するQ&A

  • Amazon AWSでのライブラリのインストール?

    ご覧になっていただきありがとうございます。 初心者が手を出すなと言われても仕方のない質問ではありますが、お分かりの方いらっしゃいましたら是非ご回答いただければと思います。 表題の通りAmazonのAWSを使いpython3 で動くソースコードがあり追加しないといけないものが何点かあるようです。 websocket json pandas datetime time pybitflyer collections このうち下記のもの以外は追加できたと認識しております。 json time collections 問題ないと思われるのは下記の3つ ec2-user:~/environment $ sudo pip install websocket ec2-user:~/environment $ sudo pip install pandas ec2-user:~/environment $ sudo pip install datetime  と入力しましたらメーターの様なものがでてきて100%と表示されたので問題ないかと思ってます。 pybitflyerは下記のようなメッセージがでました。 ec2-user:~/environment $ sudo pip install pybitflyer Collecting pybitflyer Downloading https://files.pythonhosted.org/packages/12/e8/795b8b7603ea439312b95c95891a9f1a65c4c49296ce2f7ac2a79ebe5564/pybitflyer-0.1.9.tar.gz Requirement already satisfied: requests in /usr/local/lib/python3.6/site-packages (from pybitflyer) Requirement already satisfied: urllib3<1.24,>=1.21.1 in /usr/local/lib/python3.6/site-packages (from requests->pybitflyer) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/site-packages (from requests->pybitflyer) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/site-packages (from requests->pybitflyer) Requirement already satisfied: idna<2.8,>=2.5 in /usr/local/lib/python3.6/site-packages (from requests->pybitflyer) Installing collected packages: pybitflyer Running setup.py install for pybitflyer ... done Successfully installed pybitflyer-0.1.9 You are using pip version 9.0.3, however version 18.0 is available. You should consider upgrading via the 'pip install --upgrade pip' command. 本当に申し訳ないのですが、ライブラリの追加コマンドをお教えいただけませんでしょうか? 皆様、宜しくお願い致します。

  • python解説本の機械学習サンプルコードについて

    pythonの本巻末近くで総集編として機械学習のサンプルコードが示されることが多いと思います。 私もその辺まで学習をすすめてきたのでやってみると、思うように動作しません。 pythonのコードではコード中からネットにアクセスしてファイルをダウンロードするということのようです。実際にやってみるとサイトからファイルをダウンロードできない(ホストが応答しない)と表示されます。サイトが現存することは確認しました。データもありそうです。サイト更新等の確認も必要ですが、そもそもpythonのコードがどうなっているのかということです。関連する部分は以下の2行のようです。 from sklearn import datasets, ... ... mnist = datasets.fetch_mldata('MNIST original', data_home='.') ... ...の部分はほぼ関係ないと言えると思います(printとかですから)。これだけでサイトのURLとかデータの情報(ファイル名とか)が言い尽くされているとは思えないのですが。'MNIST orijinal'というところに対応したURLを手入力するってことなのでしょうか。scikit-learnのdatasetsと言うものが裏側でダウンロード情報を持っており、それが実体と齟齬を生じているということでしょうか。 pythonはライブラリとかを使うのでそれを呼び出して進めていくのですが、このようなやっても動かないという問題にすぐ遭遇するし、自分で全くエディットしていないので(つまりある意味ひとまかせ)、対処が分かりずらいということにもなるのでしょうか。 よろしくお願いします。

  • numpy 動作確認エラーについて

    numpyの動作確認を行ったのですがエラーが出力されましたので、 対応策を教えて下さい。 >>> import numpy >>> numpy.test() Running unit tests for numpy Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/testing/nosetester.py", line 340, in test self._show_system_info() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/testing/nosetester.py", line 193, in _show_system_info nose = import_nose() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/testing/nosetester.py", line 71, in import_nose raise ImportError(msg) ImportError: Need nose >= 0.10.0 for tests - see http://somethingaboutorange.com/mrl/projects/nose よろしくお願い致します。

  • Google App EngineのPython

    これからPythonを使ってGoogle App Engineを試してみようと思っています。 ブログなどを見ていると、GAEのPythonのバージョンが2.7対応になった、という事ですが、 実際にGoogleの説明ページに行くと、 「Python SDK は、Python 2.5 がインストールされているパソコンで動作」という記述のままです。 http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/devenvironment.html これからPythonでGAEを始める場合、 インストールするPythonのバージョンは、「2.5」と「2.7」のどちらがいいでしょうか?? 教えて下さい。

  • pythonの文字エンコーディングについて

    pythonのデフォルトエンコーディングは asciiコードですよね? まず mod_wsgiモジュールを用いてapache上で実行したいと思っています。 そこで通常はマジックコメントで #cofing: utf-8 とかかなければ日本語などのマルチバイトは使用できませんよね? それを http://d.hatena.ne.jp/ama-ch/20080610/1213073848 上記ページを参考に import sys sys.setdefaultencofing("utf-8"); とかいて、やればれスクリプトを記述したファイルの冒頭で # coding: utf-8 のマジックコメントを書かなくてもよくなるのかなとおもったのですが そうはいきませんでした。 私のは考えはデフォルトの文字コードが utf-8なら マジックコメントを記述しなくても日本語があつかえるだろうと思っていたのですが・・・・。 上記ページを参考にしてデフォルトの文字コードをutf-8したにも関わらず スクリプトはマジックコメントを記入しなければ 日本語が表示されないのでしょうか? pythonのversionは2.7.2です。

  • pythonの本体処理の直前のifについて

    pythonのプログラム作法として、上から順番に、 1 拡張ライブラリの読み込み 2 関数、クラスの定義 3 処理の本体 と進むことが多い(必ずそうでなくてもいい)とのことです。 そして、3の"処理の本体"に入る前には、メインであることを確認する、以下のif文を入れる習慣とのことです。 if __name__ == '__main__': #メインのプログラムであるときに以下を実行する ここで質問ですが、この処理がメインである、ということはどこにも宣言しているわけではなく、処理の手順上自然にそうなってしまうわけですね。 C言語だったら、int main() というようなことになるし、Fortranだったら宣言と処理は見たらわかるわけです。 pythonのこのif __name__ == '__main__': は、何を問うているいるのでしょうか。__name__は変数なのでしょうか。 実際にコメントアウトしてインデントを調整したら、このif文がなしでも動作します。 例えば、クラスにおけるコンストラクタ __init__ のように __ がつくものはpythonのきまりなのだろうとは思いますが。 よろしくお願いします。

  • pythonの編集仕様のいろいろ

    pythonのプログラミングを少し始めているのですが、以下のような問題に直面しました。一番最初にhello world! を表示するものです。 hello.pyを作ってpython hello.py とすると実行するようです。 hello.pyの内容ですが、あるサイト(以下の画像)では、 print "Hello, Wordl!" とありますが、私の環境では動かず、さらにサイトを検索して、 print ( "Hello, Wordl!" ) が正しいとのことで、こちらは問題なく動作しました。 また、このprintコマンドですが、編集画面で左詰めでないとダメで、コマンドの前の空白(インデント)があったら正しく動作しないとのことです。 このようなささいな違い、またプログラム編集上の作法の問題とかを見ると、この言語の習得は難しいように感じてしまいます。アルゴリズムの完全性とか、文法上の問題が完全にクリアになってもなぜが動作しない、という問題に直面しそうなのですが。自分の知らない何かのしきたりに違反しているという状態で、しかもそれが本質的でないように見える言語仕様(先のインデントがダメという問題)というのであれば、後からいろいろ出てきそうなのですが。例えば、”コマンドは第一文字が大文字でなければならない”とかです。数百、数千行のコードを書いたりすると、間違いの可能性のあるところが目に見えないところにいっぱいという感じがするのですが。バグフィックスというのは絶対に絶対に間違いない、と断言してそれでいてうっかりミスが見つかるわけです。”間違っているかもしれないな”じゃバグフィックスできません。 それでいて割と巷間ではpython人気という感じがしているのですが。 pythonのどこがいい、ということなのでしょうか。私が考えている困難を補う効用があるのでしょうか。 私の環境はanaconda 3.5です。バージョン毎にかなり違うのでしょうか。

  • コード変換ライブラリについて

    この度、Windowsの開発で、コード変換を行うことになりました。 変換内容は、 1.半角カナを全角カナに変換 2.半角英数字を全角英数字に変換 3.全角カナ(カタカナ)を全角ひらがなに変換 の3パターンです。 漢字コードはシフトJISのみです。 上記変換を行うためのライブラリを探しております。 ご存じのかたおりましたら、教えていただけませんでしょうか。開発環境はVC++.NETですが、UNIX等で動作しているものでもかまいません。

  • pylearn2インストールに関する

    Pylearn2のインストールが実行できません。 git clone git://github.com/lisa-lab/pylearn2.git の実行を行い、続いて python setup.py developを実行したのですが、 結果は、/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'setup.py': [Errno 2] No such file or directory です。 それと、 git/pylearn2ディレクトリにて 上記のコマンドを実行した場合、 Traceback (most recent call last): File "setup.py", line 6, in <module> import numpy ImportError: No module named numpy と出力されます。 http://kensuke-mi.xyz/kensuke-mi_diary/2014/11/rbma.html のサイトの手順通りに実行を行いました。 対処方法を教えて頂けないでしょうか。 よろしくお願い致します。 pythonのversionは2.7.8 mac 10.6.8 64bitです。

  • rubyのmygameライブラリが動かない!!

    rubyのmygameライブラリがうまく動作しません。 mygame使っている方に教えていただけると幸いです。 実行環境 OS:windos vista rubyバージョン:Active script ruby1.8.5.2 rubyのmygameライブラリ(SDL同梱)をダウンロードしました。 インストーラがうまく動作しなかったので手動でやりました。 確認のコマンド(ruby -r mygame/boot -e "")では、うまく動作しました。 しかし、いざソースファイルを書いて実行してみると次のようなエラーメッセージが 出てきて実行できません。 hello.rb:1: Invalid char `\377' in expression hello.rb:1 Invalid char `\376' in expression ちなみに、ソースコードは require 'mygame/boot' Font.render 'Hello World'

専門家に質問してみよう