I think you are misunderstanding his text.
The compiler will look for the implicit conversion in all available scopes until it finds a suitable one.
In the example you specified it'll find one being provided by the complexmath package.
However, is the definition of 'suitable one' that we are interested here. In case of implicit conversions, the compiler will look for a conversion from *Double* to the expected type ComplexNumber.
In other words, it'll inspect all conversions from *Double* until it finds one that can convert a Double to the target type.
Josh, the author, is not saying that the compiler needs a conversion defined in an object associated with the Double object. The conversion can be defined everywhere.
In this particular case, the conversion is defined in the package object associated with the ComplexNumber object. And that's normal, is the ComplexNumber object that 'wants' to be compatible with Double.
And since the usage implies the import of ComplexNumber and therefore the import of package 'complexmath', the conversion will be always in scope.