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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

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

Fabric

Pythonで書かれたデプロイ・システム管理ツール。シンプルで始めやすいのが特徴です。 シェルスクリプトに慣れている人には親しみやすい管理ツールと言えます。 同様のツールにCapistranoがあります。

受付中

仮想環境でのPythonのバージョンアップについて

TAIniko
TAIniko

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

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

Fabric

Pythonで書かれたデプロイ・システム管理ツール。シンプルで始めやすいのが特徴です。 シェルスクリプトに慣れている人には親しみやすい管理ツールと言えます。 同様のツールにCapistranoがあります。

0回答

0評価

0クリップ

4閲覧

投稿2020/04/06 04:19

前提・実現したいこと

仮想環境上のPythonを2.xx から 3.xx へバージョンアップしたい。
ほかにいい方法がある、もしくは僕が試した方法の間違っている点などを教えていただきたいです。

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

TASK [webserver : Python Framework] ****************************************************************************************************************************************** fatal: [server2]: FAILED! => {"changed": false, "msg": "Traceback (most recent call last):\n File \"/usr/bin/easy_install\", line 9, in <module>\n load_entry_point('setup tools==20.7.0', 'console_scripts', 'easy_install')()\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py\", line 2293, in main\n distclass=Distri butionWithoutHelpCommands, **kw\n File \"/usr/lib/python2.7/distutils/core.py\", line 151, in setup\n dist.run_commands()\n File \"/usr/lib/python2.7/distutils/dist.py\" , line 953, in run_commands\n self.run_command(cmd)\n File \"/usr/lib/python2.7/distutils/dist.py\", line 972, in run_command\n cmd_obj.run()\n File \"/usr/lib/python 2.7/dist-packages/setuptools/command/easy_install.py\", line 414, in run\n self.easy_install(spec, not self.no_deps)\n File \"/usr/lib/python2.7/dist-packages/setuptools/ command/easy_install.py\", line 663, in easy_install\n return self.install_item(spec, dist.location, tmpdir, deps)\n File \"/usr/lib/python2.7/dist-packages/setuptools/co mmand/easy_install.py\", line 698, in install_item\n self.process_distribution(spec, dists[0], deps, \"Using\")\n File \"/usr/lib/python2.7/dist-packages/setuptools/comma nd/easy_install.py\", line 740, in process_distribution\n [requirement], self.local_index, self.easy_install\n File \"/usr/lib/python2.7/dist-packages/pkg_resources/__ini t__.py\", line 826, in resolve\n dist = best[req.key] = env.best_match(req, ws, installer)\n File \"/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py\", line 109 2, in best_match\n return self.obtain(req, installer)\n File \"/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py\", line 1104, in obtain\n return installer(re quirement)\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py\", line 663, in easy_install\n return self.install_item(spec, dist.location, tmpdi r, deps)\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py\", line 693, in install_item\n dists = self.install_eggs(spec, download, tmpdir)\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py\", line 873, in install_eggs\n return self.build_and_install(setup_script, setup_base)\n File \ "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py\", line 1101, in build_and_install\n self.run_setup(setup_script, setup_base, args)\n File \"/usr/lib /python2.7/dist-packages/setuptools/command/easy_install.py\", line 1087, in run_setup\n run_setup(setup_script, args)\n File \"/usr/lib/python2.7/dist-packages/setuptool s/sandbox.py\", line 246, in run_setup\n raise\n File \"/usr/lib/python2.7/contextlib.py\", line 35, in __exit__\n self.gen.throw(type, value, traceback)\n File \"/us r/lib/python2.7/dist-packages/setuptools/sandbox.py\", line 195, in setup_context\n yield\n File \"/usr/lib/python2.7/contextlib.py\", line 35, in __exit__\n self.gen. throw(type, value, traceback)\n File \"/usr/lib/python2.7/dist-packages/setuptools/sandbox.py\", line 166, in save_modules\n saved_exc.resume()\n File \"/usr/lib/python2 .7/dist-packages/setuptools/sandbox.py\", line 141, in resume\n six.reraise(type, exc, self._tb)\n File \"/usr/lib/python2.7/dist-packages/setuptools/sandbox.py\", line 1 54, in save_modules\n yield saved\n File \"/usr/lib/python2.7/dist-packages/setuptools/sandbox.py\", line 195, in setup_context\n yield\n File \"/usr/lib/python2.7/di st-packages/setuptools/sandbox.py\", line 243, in run_setup\n DirectorySandbox(setup_dir).run(runner)\n File \"/usr/lib/python2.7/dist-packages/setuptools/sandbox.py\", l ine 273, in run\n return func()\n File \"/usr/lib/python2.7/dist-packages/setuptools/sandbox.py\", line 242, in runner\n _execfile(setup_script, ns)\n File \"/usr/lib /python2.7/dist-packages/setuptools/sandbox.py\", line 46, in _execfile\n exec(code, globals, locals)\n File \"/tmp/easy_install-0sKzHZ/Jinja2-3.0.0a1/setup.py\", line 6, in <module>\n File \"/usr/lib/python2.7/dist-packages/setuptools/sandbox.py\", line 403, in _open\n return _open(path,mode,*args,**kw)\nTypeError: 'encoding' is an inval id keyword argument for this function\n"}

該当のソースコード

vagrant@main:/srv/ops/ansible_project$ ansible-playbook -i inventories/hosts site.yml

試したこと

エラーメッセージを見る限り

ops\ansible_project\roles\webserver\tasks\install-app.yml

内の

yml

- name: Python Framework easy_install: name: flask

でエラーが起きており、Pythonのバージョンが2.7であることが原因だと考えたので、python3.xxにバージョンアップできないか試しました。
具体的には、

\ops\fab_project\fabfile.py

内で

Python

@task @roles('web') def deploy_web(): run('apt-get install -y supervisor') run('apt-get install -y gunicorn') run('pip install Flask==1.1.0') if not exists('root/work'): run('mkdir /root/work') put('roles/web/files/hello.py', '/root/work/hello.py') put('roles/web/files/app.conf', '/etc/supervisor/conf.d/app.conf') run('service supervisor restart') @task def deploy_dev_server(): install_packages() deploy_web() print(green('success'))

ターミナルで

vagrant@main:/srv/ops/fab_project$ fab deploy_dev_server

実行結果

[root@172.16.200.101:22] out: The following additional packages will be installed: [root@172.16.200.101:22] out: libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python-pkg-resources python2.7 python2.7-minimal

ここでPython2.がインストールされている?なので

fabfile.py
deploy_web()

run('pip install python==3.7.6')

を追加して、再度上記コマンドを実行。しかしエラー?がでてしまいます。

実行結果

[root@172.16.200.101:22] run: pip install python==3.7.6 [root@172.16.200.101:22] out: DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A fu ture version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#p ython-2-support [root@172.16.200.101:22] out: ERROR: Could not find a version that satisfies the requirement python==3.7.6 (from versions: none) [root@172.16.200.101:22] out: ERROR: No matching distribution found for python==3.7.6

補足情報(FW/ツールのバージョンなど)

何がいるかが分からなかったため、フォルダ全体をGithubにアップロードしておきましたこちら

windows10

自分のPC上で動かしているPythonのバージョン
→3.7.4

仮想環境上のPythonのバージョン
→2.7.12

$ fab --version

→Fabric3 1.14.post1
Paramiko 2.7.1

$ ansible --version

→ ansible 2.4.2.0
python version = 3.5.2 (default, Oct 8 2019, 13:06:37) [GCC 5.4.0 20160609]

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

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

Fabric

Pythonで書かれたデプロイ・システム管理ツール。シンプルで始めやすいのが特徴です。 シェルスクリプトに慣れている人には親しみやすい管理ツールと言えます。 同様のツールにCapistranoがあります。