Используйте модуль csv
python для чтения и записи запятых или файлов с разделителями табуляции. Модуль csv является предпочтительным, потому что он дает вам хороший контроль над цитированием.
Например, здесь приведенный вами пример:
import csv
data = ["value %d" % i for i in range(1,4)]
out = csv.writer(open("myfile.csv","w"), delimiter=',',quoting=csv.QUOTE_ALL)
out.writerow(data)
Производит:
"value 1","value 2","value 3"
protobuf связан с библиотекой glibc , а альпийский использует musl (и более старый альпийский использовали uclibc ). Они несовместимы. Ошибка, которую вы видите, возникает из компоновщика, не находящего библиотеку libc /lib64/ld-linux-x86-64.so.2
. Вы можете проверить это, выполнив команду ldd :
$ ldd /bin/protoc
/lib64/ld-linux-x86-64.so.2 (0x7faa1a641000)
libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7faa1a641000)
libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7faa1a641000)
libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7faa1a641000)
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /bin/protoc)
Файл существует, и PATH в порядке. Чтобы исправить это, вы можете установить glibc на alpine (не рекомендуется) или просто перейти к обычному контейнеру linux.
@edit: Мой старый ответ не был прав, bash или sh не отправили исходный /etc/profile
по умолчанию , только при наличии опции -l
.
So your env variable will be overwritten.
Тогда почемуecho $PATH
внутри контейнера показывает правильный $ PATH? – Red 13 July 2018 в 09:11-l
). Так что дело не в этом, это должно быть муз, и протобуф, вероятно, нуждается в libc. – Kamil Cuk 13 July 2018 в 09:16