# \`PyCall\` throws \`PyImport\_ImportModule\` on continuous integration systems

**URL:** <https://discourse.julialang.org/t/pycall-throws-pyimport-importmodule-on-continuous-integration-systems/79239>\
**Category:** General Usage\
**Tags:** question, package, ci\
**Created:** [April 9, 2022, 12:00am UTC](https://discourse.julialang.org/t/pycall-throws-pyimport-importmodule-on-continuous-integration-systems/79239 "2022-04-09T00:00:26Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![singularitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/singularitti/32/17678_2.png) [@singularitti](https://discourse.julialang.org/u/singularitti)\
**Post date:** [April 9, 2022, 12:00am UTC](https://discourse.julialang.org/t/pycall-throws-pyimport-importmodule-on-continuous-integration-systems/79239/1 "2022-04-09T00:00:26Z")

</div>

When I am trying to test my packages which use Python packages installed by `PyCall.jl` on remote continuous integration (CI) systems, sometimes it fails because the package cannot be imported. After an investigation, I think this situation usually happens on systems with `python` pre-installed. For example, [on some 64-bit Ubuntu systems provided by GitHub CI, they have `/usr/bin/python3` installed](https://github.com/MineralsCloud/QuantumESPRESSOParser.jl/actions/runs/2114060401). And I cannot add Python packages to that executable.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/0/8/081f86afb0b844dcbad81ef13e22a69b80977b82.png)

My GitHub Actions config files are generated by [PkgTemplate.jl](https://invenia.github.io/PkgTemplates.jl/stable/), and they look like [this](https://github.com/MineralsCloud/QuantumESPRESSOParser.jl/blob/054b452d2c50945b347664b333ee62d7944d25c4/.github/workflows/CI.yml). How should I change them to make it work? Adding `ENV["PYTHON"] = ""` to somewhere in the config file?

---

<div class="post-metadata">

**Author:** ![Wen-Wei\_Tseng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wen-wei_tseng/32/28839_2.png) [@Wen-Wei\_Tseng](https://discourse.julialang.org/u/Wen-Wei_Tseng)\
**Post date:** [April 9, 2022, 4:55am UTC](https://discourse.julialang.org/t/pycall-throws-pyimport-importmodule-on-continuous-integration-systems/79239/2 "2022-04-09T04:55:19Z")

</div>

At this line

```julia
- uses: julia-actions/julia-buildpkg@v1

```

try

```julia
- uses: julia-actions/julia-buildpkg@v1
  env:
    PYTHON: ""

```

---

<div class="post-metadata">

**Author:** ![singularitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/singularitti/32/17678_2.png) [@singularitti](https://discourse.julialang.org/u/singularitti)\
**Post date:** [April 9, 2022, 6:36am UTC](https://discourse.julialang.org/t/pycall-throws-pyimport-importmodule-on-continuous-integration-systems/79239/3 "2022-04-09T06:36:17Z")

</div>

This seems to be working! Thanks! But it does not seem to work for [Windows-x86 systems](https://github.com/MineralsCloud/QuantumESPRESSOParser.jl/runs/5952414724?check_suite_focus=true):

 ![image](https://global.discourse-cdn.com/julialang/original/3X/3/e/3e77b4e8068a65fa40371e871936e02baf21d67d.jpeg)

---

<div class="post-metadata">

**Author:** ![Wen-Wei\_Tseng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wen-wei_tseng/32/28839_2.png) [@Wen-Wei\_Tseng](https://discourse.julialang.org/u/Wen-Wei_Tseng)\
**Post date:** [April 9, 2022, 7:36am UTC](https://discourse.julialang.org/t/pycall-throws-pyimport-importmodule-on-continuous-integration-systems/79239/4 "2022-04-09T07:36:10Z")

</div>

Miniforge (the default Python distribution installed by PyCall.jl) [does not support 32-bit Windows](https://github.com/conda-forge/miniforge#miniforge3). Perhaps you could [try the `setup-python` action](https://sosiristseng.github.io/2022/03/julia-in-github-actions/#using-pycalljl-in-github-actions).

```nohighlight
- uses: actions/setup-python@v2
  with:
    python-version: ${{ matrix.python-version }}
    architecture: arch: ${{ matrix.arch }}
- uses: julia-actions/setup-julia@v1
  with:
    version: ${{ matrix.julia-version }}
    arch: ${{ matrix.arch }}
- uses: julia-actions/julia-buildpkg@v1
  env:
    # PYTHON: "" # Python executable from the local miniconda distribution
    PYTHON: 'python' # Python executable from setup-python action

```
