чудеса Import'a в питоне.

Phoenix

UPD: в консольке нагляднее, чем по файлам.
UPD2: про звёздочку убрал, и без неё чудо работает.
 
C:\Documents and Settings\igor>python
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import _mssql
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: Invalid access to memory location.
>>>
>>>
>>> import PyQt4
>>> import _mssql
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: Invalid access to memory location.

>>>
>>>
>>> from PyQt4 import QtGui
>>> import _mssql
>>>
>>>
>>> O_o


 

Прикол в том, что mssql пользуюсь давно. И все приложения были c pyqt.
Сейчас вот решил к другому приложению прикрутить одну фичу с коннектом через mssql. А оно падает загадочным образом.
Я бы ещё понял, если бы в QT была своя поддержка mssql, но её там, насколько мне известно, нет.
Но даже если бы и была, КАК такое может быть?

pilot

КАК такое может быть?
У вас волчанка виндус.

Phoenix

pymssql из репозитория, собран mingw(потому что студия не той версии, с которой питон собирали, а название к параментру "-с" я не смог подобрать). Из репозитория потому что pymssql 1.0.2 которая на sourceforge выложена не имеет одного нужного багфикса.
Всё остальное бинарниками ставилось.

Phoenix

да. Я ж не для себя пишу только, потом люди будут пользоваться. И потом, нафига пользоваться кросс-платформеннымж языками/библиотеками, если они работают только в одной ОС?
Конечно, если надо юзать всякие совсем ос-зависимые вещи, типа COM, fork и пр. - то никуда от этого не уйти.
на неволчанке таких проблем нет, конечно. Как и DLL.

pilot

Я бы ещё понял, если бы в QT была своя поддержка mssql, но её там, насколько мне известно, нет.
Не знаю что такое mssql и слабо представляю qt, но гугль говорит что связь между ними есть:
http://daniel-albuschat.blogspot.com/2008/02/accessing-ms-sq...

Phoenix

QODBC - это не считается

pilot

и тем не менее непонятно почему ты называешь проблему "чудесами импорта в питоне".
Бывают ли подобные вещи для других библиотек?
Или у тебя все-таки вполне конкретная глюкавая библиотека pymssql ?

Phoenix

Как её назвать?
Если без или после
from PyQt4 import *
from PyQt4 import QtGui
другая(не связанная с qt) библиотека не импортируется, а после
from PyQt4 import QtGui
имортируется.

Phoenix

Насчёт последнего, это я погорячился. Винда не распознаёт большие-маленькие буквы, поэтому * не вскгда корректно работает. Там надо в __init__.py прописывать.
Но не суть.

danilov

http://docs.python.org/tutorial/modules.html 6.4.1

__all__ = ["echo", "surround", "reverse"]

This would mean that from sound.effects import * would import the three named submodules of the sound package.

If __all__ is not defined, the statement from sound.effects import * does not import all submodules from the
package sound.effects into the current namespace; it only ensures that the package sound.effects has been imported
(possibly running any initialization code in __init__.py) and then imports whatever names are defined in the
package. This includes any names defined (and submodules explicitly loaded) by __init__.py. It also includes
any submodules of the package that were explicitly loaded by previous import statements.

Phoenix

сейчас про звёздочку уберу, а то от основной темы эта звёздочка отвлекает.

bleyman

потому что студия не той версии, с которой питон собирали
Поставь 2008 Express Edition, будет той.

Phoenix

 
f:\igor\apps\pymssql\pymssql>python setup.py build
Setup.py is unable to find path to SQL 2000 tools. Either it's not installed
or you have insufficient permissions to read Windows registry. Please make
sure you've got administrator rights. Setup.py will try some generic paths.
running build
running build_py
creating build
creating build\lib.win32-2.5
copying pymssql.py -> build\lib.win32-2.5
running build_ext
error: Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.
 

Точно 2008 скушает? У меня 2005 стоит.
из любви к искусству, конечно попробую разные сборки(и питона в том числе) на выходных. Сейчас не до этого.
прикольно. из 25мегов сборки после py2exe 20 гигов занимает pyqt. Неслабый бонус мог бы получиться.

bleyman

Что-то это странно, мне казалось, что 2.5.2 уже 2008 собран. Может стоит поставить 2.6.4 и не париться?

Phoenix

когда я начинал этот проект писать - там не было какой-то либы не было под 2.6 (mysqldb вроде).
И что-то было сказано про какие-то сложности в переходе и что не скоро будет. Сейчас страничка проекта вообще не открывается.
Это было единственное, что останавливало.
Оставить комментарий
Имя или ник:
Комментарий: