python - Q : python (using cutadapt in bash script on cluster): libpython3. 7m.so.1.0:无法打开共享对象文件:没有这样的文件或目录

标签 python python-3.x bash unix

我正在使用程序 cutadapt(使用 python)的集群上运行 bash 脚本。

在运行脚本之前,我加载了 python 版本 3.7.0 和 cutadapt

alias python=python3
module load python/3.7.0
pip3 install --user --upgrade cutadapt

然后通过qsub发送它,但作业一直提前中止并且我不断收到以下错误:

/u/local/apps/python/3.7.0/bin/python3: 
error while loading shared libraries: libpython3.7m.so.1.0: 
cannot open shared object file: No such file or directory

这似乎不是 $LD_LIBRARY_PATH 的问题,因为 echo $LD_LIBRARY_PATH 显示 /u/local/apps/python/3.7 .0/lib 优先列出。

此外,ldd/u/local/apps/python/3.7.0/bin/python3 显示已找到 libpython3.7m.so.1.0 并指向:

libpython3.7m.so.1.0 => 
/u/local/apps/python/3.7.0/lib/libpython3.7m.so.1.0 (0x00007f66e01f6000) 

此外,以与我的脚本相同的方式调用 cutadapt 似乎工作正常:

~/.local/bin/cutadapt

This is cutadapt 2.3 with Python 3.7.0
Command line parameters:

Run "cutadapt --help" to see command-line options.
See https://cutadapt.readthedocs.io/ for full documentation.

我的同行运行了几乎完全相同的代码和脚本,并且没有遇到脚本中止/此错误消息的问题。

提前感谢您就如何解决此问题提出任何建议!

编辑(感谢您的反馈!):

这是我提交的脚本(除了集群上的主目录和输出目录不同之外,它与我的同行的脚本几乎相同):

#-- trim00s.sh --#
#!/bin/bash
#runs cutadapt on files 01-09

for i in {1..9}
do
fastq="Index0${i}.for.fq"
trimmedFastq="Index0${i}_trimmed.for.fq"
/u/home/e/evanderw/.local/bin/cutadapt -a GATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG -a "A{10}" -a "T{10}" -m 15 -q 30 -o ../../04_trimmed/lane_2/$trimmedFastq $fastq
done

我第一次登录集群后,$LD_LIBRARY_PATH 如下(我猜测它会自动设置为这些库作为该集群的默认值?):

echo $LD_LIBRARY_PATH
/u/local/compilers/intel-cs/2013.0.028/mpi/intel64/lib:
/u/local/compilers/intel-cs/2013.0.028/itac/intel64/itac/slib_impi4:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/compiler/lib/intel64:
/opt/intel/mic/coi/host-linux-release/lib:
/opt/intel/mic/myo/lib:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/mpirt/bin/intel64:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/ipp/lib/intel64:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/mkl/lib/intel64:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/tbb/lib/intel64

但是在我完成 alias python=python3module load python/3.7.0 后,它发生了变化:

echo $LD_LIBRARY_PATH
/u/local/apps/python/3.7.0/lib:
/u/local/compilers/intel/17.0.1/compilers_and_libraries_2017.1.132/linux/mkl/lib/intel64:
/u/local/apps/xz/5.2.3/lib:
/u/local/apps/openssl/1.1.1/lib:
/u/local/apps/mpfr/3.1.5/gcc-4.9.3/lib:
/u/local/apps/hdf5/1.8.18/gcc-4.4.7-shared/lib:
/u/local/compilers/gcc/4.9.3/lib:
/u/local/compilers/gcc/4.9.3/lib64:
/u/local/compilers/intel-cs/2013.0.028/mpi/intel64/lib:
/u/local/compilers/intel-cs/2013.0.028/itac/intel64/itac/slib_impi4:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/compiler/lib/intel64:
/opt/intel/mic/coi/host-linux-release/lib:
/opt/intel/mic/myo/lib:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/mpirt/bin/intel64:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/ipp/lib/intel64:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/mkl/lib/intel64:
/u/local/compilers/intel-cs/2013.0.028/composer_xe/tbb/lib/intel64

最佳答案

我更新了脚本以确保 shebang 是第一行,然后将 $LD_LIBRARY_PATH 作为文本文件打印出来:

#!/bin/bash

#-- trim00s.sh --#
#runs cutadapt on files 01-09

echo $LD_LIBRARY_PATH >foo.txt

for i in {1..9}
do
fastq="Index0${i}.for.fq"
trimmedFastq="Index0${i}_trimmed.for.fq"
/u/home/e/evanderw/.local/bin/cutadapt -a GATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG -a "A{10}" -a "T{10}" -m 15 -q 30 -o ../../04_trimmed/lane_2/$trimmedFastq $fastq
done

错误仍然存​​在,生成的 foo.txt 文件完全空白,这意味着在通过 qsub< 运行脚本时,$LD_LIBRARY_PATH 被重置为空白

因此,我在脚本中添加了一行,现在将我的代码在查找时遇到问题的库的目录添加到我的 $LD_LIBRARY_PATH 中,并且成功了!

#!/bin/bash

#-- trim00s.sh --#
#runs cutadapt on files 01-09

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/u/local/apps/python/3.7.0/lib


for i in {1..9}
do
fastq="Index0${i}.for.fq"
trimmedFastq="Index0${i}_trimmed.for.fq"
/u/home/e/evanderw/.local/bin/cutadapt -a GATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG -a "A{10}" -a "T{10}" -m 15 -q 30 -o ../../04_trimmed/lane_2/$trimmedFastq $fastq
done

关于python - Q : python (using cutadapt in bash script on cluster): libpython3. 7m.so.1.0:无法打开共享对象文件:没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55941701/

相关文章:

python - Django 查询集与列表

python - 导致语法无效的 Unicode 文字

bash - 如何拆分版本号并将每个版本号分配给一个变量?

bash - 是否可以使用存储在数组中的关键字进行 grep?

python - Selenium 独立服务器日志级别

python - fseek(fp, 0, SEEK_CUR) 的副作用是什么

c# - PHP 中的意外行为 - 相同的代码在 C# 和 Python 中给出正确的结果

python - 自动执行 Google Play 搜索列表中的项目

python-3.x - 除非使用 sudo 运行,否则 Python 脚本不起作用

python - 在 linux 上保存 virtualenv 变量