4

Jenkinsを使用して、nodepy開発したPythonモジュールをテストしています。ただし、次のようなエラーが発生します。

File "/var/lib/jenkins/jobs/NodePy/workspace/convergence.py", line 6, in workspace.convergence
Failed example:
    from nodepy import rk, convergence, ivp
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/doctest.py", line 1289, in __run
        compileflags, 1) in test.globs
      File "<doctest workspace.convergence[0]>", line 1, in <module>
        from nodepy import rk, convergence, ivp
    ImportError: No module named nodepy

JenkinsでPYTHONPATHを設定するにはどうすればよいですか(モジュールがインポート可能になるように)?

どのディレクトリを追加すればよいかさえわかりません。Jenkinsはjenkins/jobs / nodepy / worksheet /に物を置いているようです。そのため、ディレクトリには、Pythonがそれを見つけるための正しい名前すらありません。

編集:

Pythonモジュールnodepyは、git監視およびチェックアウトするようにjenkinsジョブを構成したリポジトリです。

4

4 に答える 4

10
  • パラメータ化されたジョブパラメータリストに追加します(入力するか、デフォルトを指定します)
  • または、jenkinsへの管理者アクセス権がある場合は、そこにあるシステム変数に追加できます(に移動しManage Jenkins、次にSystem Configuration
  • またはsys.path.appendスクリプト内で使用します。

例えば

import sys
import os
# jenkins exposes the workspace directory through env.
sys.path.append(os.environ['WORKSPACE'])
import nodepy

または、jenkinsビルド構成で、ビルドステップを次のように構成します(シェルスクリプトの場合)。

export PYTHONPATH=$WORKSPACE:$PYTHONPATH

パッケージの問題

/var/lib/jenkins/jobs/NodePy/workspace/convergence.py

nodepyディレクトリがないため、これは問題です。したがって、正しいsyspathを配置しても、パッケージ構造は正しくありません。できることは、ワークスペースの外観を次のように変更することです。

/var/lib/jenkins/jobs/NodePy/workspace/convergence.py
/var/lib/jenkins/jobs/NodePy/workspace/ivp.py
/var/lib/jenkins/jobs/NodePy/workspace/rk.py

/var/lib/jenkins/jobs/NodePy/workspace/nodepy/__init__.py
/var/lib/jenkins/jobs/NodePy/workspace/nodepy/convergence.py
/var/lib/jenkins/jobs/NodePy/workspace/nodepy/ivp.py
/var/lib/jenkins/jobs/NodePy/workspace/nodepy/rk.py

編集:正しいサブディレクトリにファイルを抽出する

あなたのワークスペースは

/var/lib/jenkins/jobs/NodePy/workspace/

ワークスペースディレクトリを変更する必要はありません。ジョブ名(NodePy)とjenkins構成からキーが設定されます。ワークスペースにnodepyディレクトリ作成し、そこにファイルを配置するだけです。jenkinsジョブの構成を変更gitして、正しいサブディレクトリにあるリポジトリをチェックアウトするnodepyか、ファイルを自分で移動することができます。

mkdir .nodepy
# .nodepy is hidden, * doesn't capture hidden files.
mv * .nodepy
mv .nodepy nodepy
于 2012-10-21T08:07:11.767 に答える
1

python3のインストールプロセスでは、インストールがすべてのユーザー向けであることを確認してください

インストールのカスタマイズ->次へ->すべてのユーザーにインストール

于 2021-01-27T06:52:29.927 に答える
0

nodepyテスト手順の一部としてインストールする必要があります。Jenkinsおよびその他のテスト駆動開発ツールは、インストールされたコードが変更されるたびに更新できる必要があります(また、インストール手順が正しく機能していることを確認します)。これを行う正しい方法は、.pthリンクを使用するか、インストールすることです。チェックアウト後。workspacegithubからチェックアウトされたリポジトリを単純に使用する場合は、ディレクトリから次のシェルコマンドを挿入できます。

pip install -e ./nodepy
于 2012-10-21T21:05:17.800 に答える
0

Jenkinsに私のリポジトリをサブディレクトリに複製させるために、私がする必要があるのはこの質問workspace/nodepy/への答えに従うことだけでした。Jenkinsはビルドインを実行するためworkspace、パッケージを検索します。

私が最初にこれを行ったとき、それはどういうわけかnodepy / nodepy / nodepy/...ディレクトリの無限の再帰を作成しました。ワークスペースをクリアした後、この問題はなくなりました。

于 2012-10-22T13:59:47.807 に答える