2013-04-30 2 views
1

Недавно я написал программу на Python (Windows 64-bit v3.3.1), и я пытаюсь ее поместить на D. Проблема, с которой я столкнулся, заключается в том, что я использую модуль urllib в Python, в частности, urllib.request.Request и urllib.request.urlopen, и я не смог найти эквивалент в D.Портирование Python на D: urllib

Есть ли библиотека D, которая служит для аналогичной цели? Если нет, то как мне добиться такой же функциональности? (Все, что мне нужно сделать, это загрузить файл .csv, а затем проанализировать его в массиве словарей.)

EDIT: Первоначально я попробовал предложение Ивана по импорту std.net.curl, но я столкнулся с проблемами. Сначала у меня возникла проблема со ссылкой libcurl, но потом мне удалось ее создать и поместить в папку «lib», которая избавилась от этой ошибки. Затем я получил пару ошибок .dll и после размещения соответствующих файлов .dll в том, что (я думал) было соответствующими каталогами, у меня все еще появилась ошибка: «Запись процедуры EVP_md2 не может быть расположена в библиотеке динамической ссылки C : \ WINDOWS \ SYSTEM32 \ libssl32.dll ".. Обратите внимание, что libss3l2.dll был одним из DLL-файлов, которые мне пришлось скачать. Кроме того, все эти ошибки (за исключением ошибок связывания libcurl) произошли во время выполнения, как только программа запустилась, так что действительно удалось создать просто отлично.

+0

вы могли бы вручную настроить минималистский HTTP-запрос и заставить кодировку ответов использовать что-то, с чем вы можете обращаться –

ответ

1

Вы должны использовать std.net.curl - http://dlang.org/phobos/std_net_curl.html

Обратите внимание, что вам нужно сделать ссылку на libcurl для того, чтобы использовать его. Вы можете скачать его из http://curl.haxx.se/download.html - искать «Win32 - Generic»

+0

Я пробовал это. Сначала у меня была проблема с 'libcurl ', но потом мне удалось ее создать и поместить в папку' lib', которая избавилась от этой ошибки. Затем я получил пару ошибок .dll и после размещения соответствующих файлов .dll в том, что (я думал) было соответствующими каталогами, у меня все еще появилась ошибка: «Запись процедуры EVP_md2 не может быть расположена в библиотеке динамической ссылки C : \ WINDOWS \ SYSTEM32 \ libss32.dll ".. Обратите внимание, что 'libss32.dll' был одним из DLL-файлов, которые мне пришлось скачать. –

+0

Я думаю, что добавлю дополнительную информацию в исходный вопрос, чтобы ее было легче найти. –

+0

Мне удалось запустить его на моем рабочем окне Windows с помощью только 'libcurl.dll'. Поместите его в каталог вашего проекта и свяжите его с помощью 'pragma (lib," curl ");' –

2

Ладно, так что я не уверен, что я сделал неправильно изначально, но я завелся удаление curl.lib Я произвел первый раз и все копии libssl32.dll , Копию libcurl, которую я скачал с этого момента, можно получить here. (Я забыл, какую версию я скачал в первый раз, но я думаю, что мои проблемы могут быть просто результатом я получаю неправильную версию в первый раз.)

Затем я построил `curl.lib» с помощью

libimp.exe /s curl.lib libcurl.dll 

(libimp это утилита для D, которые могут быть найдены here.), и поставить curl.lib в DMD\windows\lib\.

Наконец, я скопировал все DLL-файлы в корневую папку libccurl download и поместил их в папку с исполняемым файлом, который я пытался создать. Затем я снова построил проект, и все прошло отлично.

+1

Спасибо! этот ответ был очень полезен –