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

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

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

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

Q&A

解決済

1回答

418閲覧

pythonでexe化で実行するとcryptography package is not installedとなりwindowsのoracleに接続できない

edmame

総合スコア21

Python

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

0グッド

0クリップ

投稿2024/12/06 02:45

実現したいこと

実行環境:
windows10
Python 3.12.4 (tags/v3.12.4:8e8a4ba, Jun 6 2024, 19:30:16) [MSC v.1940 64 bit (AMD64)] on win32
python312\lib\site-packages (24.3.1)

pythonでoracleに接続するスクリプトをexeにして実行したい。

発生している問題・分からないこと

scriptで実行するとoracleに接続できるが、exeにして実行すると
racledb.exceptions.NotSupportedError: DPY-3016: python-oracledb thin mode cannot be used because the cryptography package is not installed
となってしまう。

エラーメッセージ

error

1C:\work\Py>C:\work\Py\dist\conoracle.exe 2Traceback (most recent call last): 3 File "conoracle.py", line 14, in <module> 4 connection = oracledb.connect(dsn=dsn) 5 ^^^^^^^^^^^^^^^^^^^^^^^^^ 6 File "oracledb\connection.py", line 1194, in connect 7 File "oracledb\connection.py", line 575, in __init__ 8 File "src\\oracledb\\impl/thin/connection.pyx", line 318, in oracledb.thin_impl.ThinConnImpl.__init__ 9 File "src\\oracledb\\impl/thin/connection.pyx", line 78, in oracledb.thin_impl.BaseThinConnImpl.__init__ 10 File "oracledb\errors.py", line 195, in _raise_err 11oracledb.exceptions.NotSupportedError: DPY-3016: python-oracledb thin mode cannot be used because the cryptography package is not installed

該当のソースコード

python

1import getpass 2import secrets 3import asyncio 4import uuid 5import cryptography.hazmat.primitives.kdf.pbkdf2 6import oracledb 7 8# DSN (Data Source Name) を指定して接続 9dsn = "tokusya/tokusya@192.168.10.150:1521/orcl" 10connection = oracledb.connect(dsn=dsn) 11 12# 接続が成功した場合のメッセージ 13print("接続に成功しました。")

spec

1# -*- mode: python ; coding: utf-8 -*- 2 3block_cipher = None 4 5a = Analysis( 6 ['conoracle.py'], 7 pathex=['C:\\work\\Py'], 8 binaries=[], 9 datas=[], 10 hiddenimports=['oracledb', 'getpass', 'secrets', 'asyncio', 'uuid', 'cryptography', 'cryptography.hazmat.primitives.kdf.pbkdf2'], # 必要なモジュールをリスト形式で指定 11 hookspath=[], 12 runtime_hooks=[], 13 excludes=[], 14 win_no_prefer_redirects=False, 15 win_private_assemblies=False, 16 cipher=block_cipher, 17 noarchive=False 18) 19 20pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) 21 22exe = EXE( 23 pyz, 24 a.scripts, 25 a.binaries, 26 a.zipfiles, 27 a.datas, 28 [], 29 name='conoracle', 30 debug=False, 31 bootloader_ignore_signals=False, 32 strip=False, 33 upx=True, 34 upx_exclude=[], 35 runtime_tmpdir=None, 36 console=True 37)

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

speceファイルを変更したりしましたが、エラーは解消しませんでした。

補足

なし

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

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

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

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

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

edmame

2024/12/06 06:03

タイトルがおかしいかったので補足します。 OracleはLinuxサーバにあります。 WindowsでPythonを実行。 Py hoge.pyは問題なく実行で"接続に成功しましたとなる。 exeにするとcryptography package is not installedとエラーになってしまいます。
guest

回答1

0

自己解決

自己解決しました。

下記の英語ですが、ビルド方法がのっていました。
https://github.com/oracle/python-oracledb/issues/401

python -OO -m PyInstaller -F -c --noupx --noconfirm --hidden-import secrets --hidden-import asyncio --hidden-import uuid --hidden-import cryptography.hazmat.primitives.kdf.pbkdf2 --hidden-import cryptography.x509 conoracle.py

投稿2024/12/06 06:47

edmame

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問