Python 在 Gitlab 上有 ModuleNotFound,但是当我 运行 在本地时没有
Python on Gitlab has ModuleNotFound, But Not When I Run Locally
以下快照显示了文件结构:
当我 运行 在 Git 实验室 CI 上时,我看到的是:
为什么在 Git实验室 运行 时会出现此错误,而在本地 运行 时却不会?
这是我的 .gitlab-ci.yml
文件。
请注意,这之前一直有效。
我最近将 win_perf_counters
设为 Git 子模块,而不是实际的子目录。 (同样,它在本地有效。)
test:
before_script:
- python -V
- pip install virtualenv
- virtualenv venv
- .\venv\Scripts\activate.ps1
- refreshenv
script:
- python -V
- echo "******* installing pip ***********"
- python -m pip install --upgrade pip
- echo "******* installing locust ********"
- python -m pip install locust
- locust -V
- python -m pip install multipledispatch
- python -m pip install pycryptodome
- python -m pip install pandas
- python -m pip install wmi
- python -m pip install pywin32
- python -m pip install influxdb_client
- set LOAD_TEST_CONF=load_test.conf
- echo "**** about to run locust ******"
- locust -f ./src/main.py --host $TARGET_HOST -u $USERS -t $TEST_DURATION -r $RAMPUP -s 1800 --headless --csv=./LoadTestsData_VPOS --csv-full-history --html=./LoadTestsReport_VPOS.html --stream-file ./data/stream_jsons/streams_vpos.json --database=csv
- Start-Sleep -s $SLEEP_TIME
variables:
LOAD_TEST_CONF: load_test.conf
PYTHON_VERSION: 3.8.0
TARGET_HOST: http://10.10.10.184:9000
tags:
- win2019
artifacts:
paths:
- ./LoadTests*
- public
only:
- schedules
after_script:
- ls src -r
- mkdir .public
- cp -r ./LoadTests* .public
- cp metrics.csv .public -ErrorAction SilentlyContinue
- mv .public public
当我尝试更改 Gitlab CI 文件以使用 requirements.txt
时:
您在本地环境中使用的 python 库可能与您在 gitlab 中使用的库不同。 运行 a pip list
or pip freeze
in your local machine 看看你有哪些版本。然后 pip install 那些在你的 gitlab 脚本中。一个好的做法是使用特定版本的 requirements.txt 或 setup.py 文件,而不是每次都拉取最新版本。
可能你正在开发的模块没有__init__.py文件,因此从外部导入时找不到。
以下快照显示了文件结构:
当我 运行 在 Git 实验室 CI 上时,我看到的是:
为什么在 Git实验室 运行 时会出现此错误,而在本地 运行 时却不会?
这是我的 .gitlab-ci.yml
文件。
请注意,这之前一直有效。
我最近将 win_perf_counters
设为 Git 子模块,而不是实际的子目录。 (同样,它在本地有效。)
test:
before_script:
- python -V
- pip install virtualenv
- virtualenv venv
- .\venv\Scripts\activate.ps1
- refreshenv
script:
- python -V
- echo "******* installing pip ***********"
- python -m pip install --upgrade pip
- echo "******* installing locust ********"
- python -m pip install locust
- locust -V
- python -m pip install multipledispatch
- python -m pip install pycryptodome
- python -m pip install pandas
- python -m pip install wmi
- python -m pip install pywin32
- python -m pip install influxdb_client
- set LOAD_TEST_CONF=load_test.conf
- echo "**** about to run locust ******"
- locust -f ./src/main.py --host $TARGET_HOST -u $USERS -t $TEST_DURATION -r $RAMPUP -s 1800 --headless --csv=./LoadTestsData_VPOS --csv-full-history --html=./LoadTestsReport_VPOS.html --stream-file ./data/stream_jsons/streams_vpos.json --database=csv
- Start-Sleep -s $SLEEP_TIME
variables:
LOAD_TEST_CONF: load_test.conf
PYTHON_VERSION: 3.8.0
TARGET_HOST: http://10.10.10.184:9000
tags:
- win2019
artifacts:
paths:
- ./LoadTests*
- public
only:
- schedules
after_script:
- ls src -r
- mkdir .public
- cp -r ./LoadTests* .public
- cp metrics.csv .public -ErrorAction SilentlyContinue
- mv .public public
当我尝试更改 Gitlab CI 文件以使用 requirements.txt
时:
您在本地环境中使用的 python 库可能与您在 gitlab 中使用的库不同。 运行 a pip list
or pip freeze
in your local machine 看看你有哪些版本。然后 pip install 那些在你的 gitlab 脚本中。一个好的做法是使用特定版本的 requirements.txt 或 setup.py 文件,而不是每次都拉取最新版本。
可能你正在开发的模块没有__init__.py文件,因此从外部导入时找不到。